头文件引用后加了一条 MSVC 链接器指令
#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
头文件引用后加了一条 MSVC 链接器指令
除了使用 #pragma comment(linker, ...) 指令外,还有以下几种常见方法可以启用 Windows 通用控件(Visual Styles):
方法一:使用项目属性配置
在 Visual Studio 中,可以通过项目属性启用通用控件,无需修改代码:
- 右键项目,选择「属性」。
- 进入「链接器」→「清单文件」。
- 将「其他清单文件」设置为
comctl32.dll的依赖项,或在「输入」→「附加依赖项」中添加comctl32.lib。 - 在「链接器」→「命令行」中添加:
/MANIFESTDEPENDENCY:"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'"
方法二:使用 .manifest 文件
创建一个独立的应用程序清单文件(如 app.manifest),并在其中声明通用控件依赖:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<dependency>
<dependentAssembly>
<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
</dependentAssembly>
</dependency>
</assembly>
然后在项目属性中,将「清单工具」→「输入和输出」→「附加清单文件」设置为该 .manifest 文件。
方法三:使用 CMake 配置
如果使用 CMake 构建,可以在 CMakeLists.txt 中通过链接选项添加清单依赖:
target_link_options(${PROJECT_NAME} PRIVATE
"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'"
)
方法四:使用 InitCommonControlsEx 函数
在代码中调用 InitCommonControlsEx 函数,并传入 ICC_WIN95_CLASSES 标志,以初始化通用控件库:
#include <windows.h>
#include <commctrl.h>
#pragma comment(lib, "comctl32.lib")
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
INITCOMMONCONTROLSEX icc = { sizeof(icc), ICC_WIN95_CLASSES };
InitCommonControlsEx(&icc);
// 其余代码...
return 0;
}
需要注意的是,InitCommonControlsEx 只能初始化控件库,若要启用视觉样式(Visual Styles),仍需配合清单文件或链接器指令。
最简单的方法:直接使用 #pragma comment 指令
在所有方法中,最推荐的是直接在头文件引用后添加 #pragma comment(linker, ...) 指令。它无需额外创建清单文件、无需修改项目配置,只需一行代码即可完成,且对 Visual Studio 和 CMake 构建均适用,是最省事、最不易出错的方式。
386



被折叠的 条评论
为什么被折叠?



