我正在尝试在应用程序中启用通用控件。我按照中给出的步骤进行操作这篇 MSDN 文章,特别是该部分在仅使用标准扩展的应用程序中使用 ComCtl32.dll 版本 6。但我无法让它发挥作用。
我做的唯一与本文不同的事情是我将清单信息添加到项目属性页|配置属性|链接器|清单文件 |附加清单依赖项。这是我在文本框中输入的内容:
“类型='Win32'名称='Microsoft.Windows.Common-Controls'版本='6.0.0.0'processorArchitecture='*'publicKeyToken='6595b64144ccf1df'语言='*'xmlns='http://schemas.microsoft.com/developer/msbuild/2003'";%(附加清单依赖项)
当我检查生成的清单(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。可能是什么问题呢?
UPDATE:我注意到一些可能与“文件未找到错误”相关的内容。当我从调试器运行应用程序时,输出窗口中的一行是:
'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 会有所不同吗?