相关疑难解决方法(0)

如何在没有清单的情况下启用视觉样式

根据文件:

"如果您希望应用程序使用ComCtl32.dll版本6,则必须添加应用程序清单或编译器指令,以指定如果版本6可用,则应使用该版本."

注意上面的逻辑OR?那么这个神秘的编译器指令是什么?

我有一个原生的Win32 C++应用程序,它完全包含在一个.cpp文件中.没有资源文件,清单文件等.我想保持这种方式,但我也想使用视觉样式.

c++ winapi comctl32 visual-styles

11
推荐指数
3
解决办法
1万
查看次数

如何在Windows应用程序中启用常用控件

我正在尝试在应用程序中启用常用控件.我按照本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)时,它看起来是正确的.

我还在Project Properties中为ComCtl32.lib添加了一个链接依赖项 配置属性| 链接器| 输入| 额外的依赖关系.我也在启动时调用InitCommonControlsEx,其INITCOMMONCONTROLSEX结构初始化如下:

INITCOMMONCONTROLSEX icex;
icex.dwSize = sizeof(INITCOMMONCONTROLSEX);
icex.dwICC = ICC_STANDARD_CLASSES;
Run Code Online (Sandbox Code Playgroud)

但是对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不同吗?

c++ winapi

8
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×2

winapi ×2

comctl32 ×1

visual-styles ×1