注册

CpuDbg x96

查看: 2790|回复: 0
收起左侧

进度条控件显示xp风格蓝色的问题解决方案

[复制链接]
发表于 2022-3-26 04:32:14 | 显示全部楼层 |阅读模式
无论是mfc还是win32 拖拽Progress Bar控件, 运行后都是显示蓝色的进度条, 如下图:

xp风格蓝色

xp风格蓝色


运行起来不好看 , 下面是绿色的, 还有渐变效果.

WIN7风格绿色

WIN7风格绿色


最近在更新调试器的PDB符号下载功能,发现x64dbg的符号下载,也是这种绿色渐变效果的进度条.其实这个早就发现了, 一直以为是别人自绘的. 直到我在WIN10 VS2010 MFC 中拽了一个bar控件,才发现
效果和x64dbg的如出一辙. 就猜想肯定是哪里设置的问题, 因为关键词不明确, 导致GG了半天也没有找到相关信息.
直到下载了一个类似颜色的渐变的进度条代码,从代码里也没有发现任何异样, 最后还是在stdafx.h里面发现了异样.
原来是 manifest 知道这些关键词,再一搜,就有一大堆相关内容了. 这里做个纪录.

方法一:
修改方案, 在stdafx.h底部, 添加如下代码即可. (本人觉得这个方法最简单省事.推荐)
[C++] 纯文本查看 复制代码
// TODO: 在此处引用程序需要的其他头文件
//#ifdef _UNICODE
#if defined _M_IX86
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_IA64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='ia64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#elif defined _M_X64
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"")
#else
#pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"")
#endif
//#endif


方法二:
将下面的文件保存为 odx64.manifest 导入进资源里面, 资源类型随便填写. (本机 win10 vs2010 实测资源类型和ID是可以随便填写的. 网上说的得写固定24还是42). 添加进去后重新编译,即可生效. (如果没生效, 删除 *.sdf 重启IDE尝试.)
[XML] 纯文本查看 复制代码
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity
      name="Microsoft.Windows.MyCoolApp"
      processorArchitecture="*"
      version="5.3.0.0"
      type="win32"/>
   <dependency>
      <dependentAssembly>
         <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="*"
            publicKeyToken="6595b64144ccf1df"
            language="*"
         />
      </dependentAssembly>
   </dependency>
</assembly>



方法三:#to be continued

2022.05.07 发现 edit控件提示信息. Edit_SetCueBannerText 或者 Edit_SetCueBannerText 不生效. 原因也是因为没有启用上面的 Visual Styles ,只要启用就可以正常显示了, 效果如下图:

文本框提示信息

文本框提示信息






回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 注册

QQ|Archiver|手机版| CpuDbg x96

GMT, 2024-12-22 11:03 , Processed in 0.078125 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表