In *_*ico 11
您需要将清单文件嵌入到可执行文件中,该文件告诉Windows您希望启用主题的控件版本(有专门针对此主题的MSDN文档).这实际上是出于兼容性原因,因为有些人真的喜欢编写混乱其他程序内部数据结构的程序.
在Visual C++中,最简单的方法可能是通过#pragma:
#pragma comment(linker,"/manifestdependency:\"" \
"type='win32' " \
"name='Microsoft.Windows.Common-Controls' " \
"version='6.0.0.0' " \
"processorArchitecture='*' " \
"publicKeyToken='6595b64144ccf1df' " \
"language='*'\"")
Run Code Online (Sandbox Code Playgroud)
这会导致链接器将这样的内容添加到生成的清单文件中:
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*" />
</dependentAssembly>
</dependency>
Run Code Online (Sandbox Code Playgroud)
您还需要调用InitCommonControlsEx()以注册相应的控件类,否则将不会出现对话框.
正如Mark Ransom在下面的评论中提到的,Windows 2000忽略了主题清单,因此这应该仍然适用于Windows 2000,Windows XP和更高版本.此外,某些框架(如MFC)定义#pragma并为您执行初始化.
| 归档时间: |
|
| 查看次数: |
1337 次 |
| 最近记录: |