我正在尝试在应用程序中启用常用控件。我遵循了这篇 MSDN 文章中给出的步骤,特别是在仅使用标准扩展的应用程序中使用 ComCtl32.dll 版本 6 部分。但我无法让它工作。
与文章唯一不同的是,我在Project Property Pages |中添加了清单信息。配置属性 | 链接器 | 清单文件 | 附加清单依赖项。这是我在文本框中输入的内容:
"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”:已加载“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 会有所不同吗?