問題タブ [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.
c# - C#でWindowsフォームの外にTaskDialogを表示するには? (comctl v6 はロードされていません)
私は TaskDialogs が大好きで、頻繁に使用していますが、Windows フォーム クラスの外でそれらを呼び出すのに問題があります。
Winforms クラスでは、次のように簡単に呼び出すことができます。
したがって、アプリケーションの実行中に例外がスローされた場合に一般的なエラー メッセージを表示するために、同じ行を static に記述しましたProgram.Main()
。
しかし、このダイアログが表示されるべきとき、私はNotSupportedException
atを取得し.Show()
ます:
TaskDialog 機能はバージョン 6 の comctl32.dll をロードする必要がありますが、現在別のバージョンがメモリにロードされています。
app.manifest
assemblyIdentity
バージョンを 6.0 に定義することがプロジェクト ファイルに含まれています。
私はいくつかの調査を行い、 TaskDialog が を必要とする可能性があることを発見しましたが、非オブジェクトをApplicationContext
渡す方法がわかりません。Windows.Form
この問題を回避するにはどうすればよいですか? ご提案ありがとうございます。
(TaskDialog で頻繁に発生する問題については、さまざまな NuGet バージョンでこれをテストしましたがWindowsAPICodePack
、同じ結果が得られました。再現性を高めるために:Install-Package WindowsAPICodePack-Core
とShell
. よろしく)
winapi - TaskDialog の幅の指定
関数を介してタスクダイアログを使用していTaskDialogIndirect
ます。
cxWidth
ダイアログの幅が構造体のフィールドで指定した幅のちょうど 2 倍であることを除いて、すべてが期待どおりに機能しますTASKDIALOGCONFIG
。
関連コード:
ドキュメントによると、これはcxWidth
ダイアログ単位の幅です。
上記のコードでは、ダイアログの幅が 150 ではなく 300 ピクセルになっています。これは、1 つの水平ダイアログ ユニットが 2 であることを意味し、非常に小さいように見えます。
タスク ダイアログの幅を明示的に指定したい場合、どうすればよいですか? この場合、1 つの水平ダイアログ ユニットが常に 2 であるという事実に頼ることはできないと思います。