アプリケーションで共通のコントロールを有効にしようとしています。このMSDNの記事、特に標準の拡張機能のみを使用するアプリケーションでのComCtl32.dllバージョン6の使用のセクションに記載されている手順に従いました。しかし、私はそれを機能させることができません。
この記事とは異なる方法で行っているのは、プロジェクトプロパティページ|にマニフェスト情報を追加することだけです。構成プロパティ| リンカー| マニフェストファイル| 追加のマニフェスト依存関係。これは私がテキストボックスに入力するものです:
"type ='Win32' name ='Microsoft.Windows.Common-Controls' version = '6.0.0.0' ProcessorArchitecture ='*' publicKeyToken = '6595b64144ccf1df' language ='*' xmlns=' http://schemas.microsoft。 com /developer / msbuild / 2003 '";%(AdditionalManifestDependencies)
生成されたマニフェスト(MyApp.exe.intermediate.manifest)を確認すると、正しく表示されます。
また、プロジェクトのプロパティ|でComCtl32.libへのリンク依存関係を追加します。構成プロパティ| リンカー| 入力| 追加の依存関係。また、起動時に次のように初期化されたINITCOMMONCONTROLSEX構造を使用してInitCommonControlsExを呼び出します。
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_STANDARD_CLASSES;
ただし、InitCommonControlsExを呼び出すと、常にFALSEが返されます(これは失敗したことを意味します)。調査の結果、GetLastErrorから返されるエラーコードはERROR_FILE_NOT_FOUNDであることがわかりました。何が問題なのですか?
更新:「ファイルが見つかりません」エラーに関連している可能性があることに気づきました。デバッガーからアプリを実行すると、[出力]ウィンドウの行の1つは次のようになります。
'MyApp.exe':ロード済み'C:\ Windows \ winsxs \ x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.6002.18305_none_88f3a38569c2c436 \ comctl32.dll'、PDBファイルが見つからないか開くことができません
ただし、kernel32.lib、user32.libなどのより標準的なライブラリのいくつかには同様の行がたくさんあります。
'MyApp.exe':ロードされました'C:\ Windows \ System32 \ ntdll.dll'、PDBファイルが見つからないか開くことができません
'MyApp.exe':ロードされました'C:\ Windows \ System32 \ kernel32.dll'、PDBファイルが見つからないか開くことができません
'MyApp.exe':ロードされました'C:\ Windows \ System32 \ msvcrt.dll'、PDBファイルが見つからないか開くことができません
'MyApp.exe':ロード済み'C:\ Windows \ System32 \ user32.dll'、PDBファイルが見つからないか開くことができません
これらの行はどのアプリケーションでも常に表示され、問題は発生しません。ComCtl32.dllでは違うのでしょうか?