CTreeCtrl表头视觉样式差异:如何设置Windows现代版样式?
解决CTreeCtrl视觉样式差异的方法
1. 检查视觉样式清单配置
Windows Vista及以后的控件现代样式,需要程序通过清单文件告知系统启用。自行开发的应用大概率缺少这个配置:
- 右键项目 → 属性 → 配置属性 → 清单工具 → 输入和输出 → 附加清单文件:确认是否引用了包含
Microsoft.Windows.Common-Controls的清单。 - 若未配置,可开启自动生成:进入配置属性 → 清单工具 → 常规,将「启用用户账户控制(UAC)」设为
是 (/MANIFESTUAC),VS会自动生成包含通用控件样式的清单。
2. 手动添加清单文件(自动生成无效时)
创建名为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>
之后在项目属性的「附加清单文件」中,指向该文件路径(例如$(ProjectDir)app.manifest)。
3. 排查控件样式设置
确保CTreeCtrl创建时未强制使用旧样式:
- 避免在
Create函数或资源编辑器中设置复古相关样式(无需手动指定XP兼容的特殊样式)。 - 资源编辑器中右键CTreeCtrl → 属性 → 样式,确认未勾选特殊兼容选项。
4. 确认项目平台工具集
右键项目 → 属性 → 配置属性 → 常规 → 平台工具集,选择v142(VS2019默认版本),不要使用v100及以前的老旧工具集——旧工具集默认不启用现代视觉样式。
内容的提问来源于stack exchange,提问作者Michal Hadraba
相关产品推荐
相关产品推荐

