問題タブ [comctl32]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
552 参照

c# - C#でWindowsフォームの外にTaskDialogを表示するには? (comctl v6 はロードされていません)

私は TaskDialogs が大好きで、頻繁に使用していますが、Windows フォーム クラスの外でそれらを呼び出すのに問題があります。
Winforms クラスでは、次のように簡単に呼び出すことができます。

したがって、アプリケーションの実行中に例外がスローされた場合に一般的なエラー メッセージを表示するために、同じ行を static に記述しましたProgram.Main()

しかし、このダイアログが表示されるべきとき、私はNotSupportedExceptionatを取得し.Show()ます:

TaskDialog 機能はバージョン 6 の comctl32.dll をロードする必要がありますが、現在別のバージョンがメモリにロードされています。

app.manifestassemblyIdentityバージョンを 6.0 に定義することがプロジェクト ファイルに含まれています。

私はいくつかの調査を行い、 TaskDialog が を必要とする可能性があることを発見しましたが、非オブジェクトをApplicationContext渡す方法がわかりません。Windows.Form

この問題を回避するにはどうすればよいですか? ご提案ありがとうございます。


(TaskDialog で頻繁に発生する問題については、さまざまな NuGet バージョンでこれをテストしましたがWindowsAPICodePack、同じ結果が得られました。再現性を高めるために:Install-Package WindowsAPICodePack-CoreShell. よろしく)

0 投票する
0 に答える
249 参照

winapi - TaskDialog の幅の指定

関数を介してタスクダイアログを使用していTaskDialogIndirectます。

cxWidthダイアログの幅が構造体のフィールドで指定した幅のちょうど 2 倍であることを除いて、すべてが期待どおりに機能しますTASKDIALOGCONFIG

関連コード:

ドキュメントによると、これはcxWidthダイアログ単位の幅です。

上記のコードでは、ダイアログの幅が 150 ではなく 300 ピクセルになっています。これは、1 つの水平ダイアログ ユニットが 2 であることを意味し、非常に小さいように見えます。

タスク ダイアログの幅を明示的に指定したい場合、どうすればよいですか? この場合、1 つの水平ダイアログ ユニットが常に 2 であるという事実に頼ることはできないと思います。