1

C# でマネージド アプリケーション TestApplication.exe があり、Application.EnableVisualStyles()既に呼び出されています。

[DLLImport()]アンマネージ dll からいくつかの外部ダイアログをインポートするために使用する C# にもクラス ライブラリ MySharedCode.dll があります。

さて、今、私は TestApplication.exe で MySharedCode.dll を (参照を追加して) 使用しており、そこから a を呼び出してfunction MyTestConfigDlg()います。TestClass.MyTestConfigDlg();

OK、すべて正常に動作し、ダイアログが表示されますが、ダイアログに XP スタイル/テーマがありませんか?

マネージ モジュールとアンマネージ モジュールの一般的な問題かどうかを確認したかったので[DLLImport()]、同じMyTestConfigDlg()ダイアログを呼び出すために使用しましたが、今回は TestApplication.exe で直接呼び出しました。おお!私が期待したように働いた。ダイアログは XP スタイル/テーマでした!

それで、私を助けてくれる人はいますか?参考までに: また、(テストのためだけに)MessageBoxA()クラス ライブラリ Dll で API 呼び出しを呼び出そうとしましたが、これは後で TestApplication.exe によって呼び出され、MessageBoxA()スタイル/テーマもありませんでした!

前もって感謝します!

4

1 に答える 1

0

の使用法は、Application.EnableVisualStyles()ListBox、ListView、Menu、Buttonsなどの特定のWindowsコントロールに適用され、最初からXPテーマコントロールと一致します。Vista以降で実行されている場合は、コントロールもそのスタイルに準拠します。 。要するに、参照を介して直接呼び出されたときにダイアログがXP /テーマをサポートしていないということはどういう意味かわかりませんが、DllImportキーワードを使用して機能をインポートした場合、それは珍しいことです。通常、の使用法DllImportはアンマネージコードAPIですが、どういうわけかそれを拾い上げました... .NET 1.1フレームワークにバグがあったことを思い出します。Application.EnableVisualStyles()呼び出した場合、を呼び出さない限り、それは機能しませんでした。Application.DoEvents()ビジュアルスタイルを有効にすることとwinformsをインスタンス化することの間で呼び出されました。おそらくあなたの場合、ダイアログをインスタンス化するときにApplication.DoEvents()、それ以外の場合は、私はアイデアがありません...

これがお役に立てば幸いです、よろしく、トム。

于 2010-02-23T16:06:34.670 に答える