アプリケーションで共通コントロールを有効にしようとしています。 this MSDN articleに記載されている手順、具体的にはUsing ComCtl32.dll Version 6 in an Application That Uses Only Standard Extensionsの手順に従いました。しかし、私はそれを働かせることはできません。Windowsアプリケーションで共通コントロールを有効にする方法
私が記事と異なって行うのは、マニフェスト情報を追加することだけです。プロジェクトプロパティページ|構成プロパティ|リンカー|マニフェストファイル|追加のマニフェスト依存性。これは私がテキストボックスに入力したものです。
「タイプ= 'Win32の' 名前= 'Microsoft.Windows.Common-コントロール' バージョン= '6.0.0.0' processorArchitecture = '*' なPublicKeyToken = '6595b64144ccf1df' LANGUAGE = '*' xmlns = 'http://schemas.microsoft.com/developer/msbuild/2003' ";%(AdditionalManifestDependencies)
生成されたマニフェスト(MyApp.exe.intermediate.manifest)をチェックすると、正しく表示されます。
また、ComCtl32.libにリンク依存関係を追加するプロジェクトのプロパティ|構成プロパティ|リンカー|入力|追加の依存関係。 (それが失敗したことを意味する)
INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_STANDARD_CLASSES;
しかしInitCommonControlsExへの呼び出しは常にFALSEを返します。また、私はこのように初期化さINITCOMMONCONTROLSEX構造で、起動時にInitCommonControlsExを呼び出します。いくつかの調査の後、GetLastErrorから返されたエラーコードがERROR_FILE_NOT_FOUNDであることがわかりました。何が問題なの?
更新: "ファイルが見つかりませんでした"というエラーが発生しました。私は、デバッガからアプリケーションを実行すると、出力ウィンドウ内の行の一つは次のとおりです。
'MYAPP.EXE':ロード「C:\ WINDOWS \ winsxs \ x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.6002。 18305_none_88f3a38569c2c436 \ COMCTL32.DLLは」てKernel32.lib、user32.libのようなより多くの標準ライブラリの一部についても同様の線の束がなどがある、
しかしPDBファイルを検索したり、開くことができません:
'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のために異なっているかもしれませんか?
私は明らかな質問をします。マニフェスト情報を手動で追加しないで*動作しますか? – WhozCraig
@WhozCraigそれを試してみましたが、うまくいきませんでした。 – user1610015
WinMainの最初の行としてInitCommonControls()(Ex versonではなく)を呼び出すことを検討しましたか?それはうまくいかないでしょうか?または、新しいビジュアルスタイルの1つを取得しようとしていますか? – selbie