vs2010 MFC所使用字符集不同时导致控件外观不一样的解决办法

针对VS2010 MFC应用中控件因字符集设置不同导致的外观差异,提供了两种解决方案:1) 修改stdAfx.h文件,通过预处理器指令和pragma comment链接器指令指定依赖的Windows Common Controls库版本。2) 使用外部.manifest文件来改变界面风格,确保所有控件统一显示。

方法1:修改stdAfx.h中的代码

#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

方法2:采用.manifest文件修改界面风格

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <assemblyIdentity
     version="1.0.0.0"
     processorArchitecture="X86"
     name="Microsoft.Windows.dummy"
     type="win32"/>
  <description>Your app description here</description>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
      type="win32"
      name="Microsoft.Windows.Common-Controls"
      version="6.0.0.0"
      processorArchitecture="X86"
      publicKeyToken="6595b64144ccf1df"
      language="*"/>
    </dependentAssembly>
  </dependency>
</assembly>

(1)将以上内容复制保存为XXX.manifest文件,并作为资源文件加入到工程中,资源ID为IDR_XXX;
(2)如果是.dll工程,则在Resource.h中添加:
   #define IDR_XXX                    200
   并在StdAfx.h中添加
   #define ISOLATION_AWARE_ENABLED    100
(3)如果是.exe工程,则在Resource.h中添加:
   #define IDR_XXX                    100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值