我試圖在應用程序中啓用常用控件。我遵循了this MSDN article中給出的步驟,特別是Using ComCtl32.dll Version 6 in an Application That Uses Only Standard Extensions。但我無法讓它工作。如何在Windows應用程序中啓用常用控件
我與文章的唯一不同之處在於我在中添加清單信息項目屬性頁|配置屬性|鏈接器|清單文件|額外的艙單依賴關係。這是我在文本框中輸入的內容:
「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。可能是什麼問題呢?
更新:我注意到一些可能與「文件未找到錯誤」有關的東西。當我從調試器中運行應用程序,在輸出窗口的線路之一是:
'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':Loaded'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
您是否認爲調用InitCommonControls()(而不是Ex verson)作爲WinMain的第一行。這不行嗎?或者你是否想要獲得一種新的視覺風格? – selbie