更改字符集后 MFC 应用程序的视觉外观发生变化
Posted
技术标签:
【中文标题】更改字符集后 MFC 应用程序的视觉外观发生变化【英文标题】:MFC applications' visual appearence changed after changing character set 【发布时间】:2013-10-24 05:27:25 【问题描述】:最初我的应用程序是基于 Unicode 字符集(项目属性 -> 常规 -> 字符集)构建的,但是由于不可避免的原因,我不得不使用多字节字符集。属性表的外观立即变得不那么吸引人了。编辑框凹陷,按钮、选项卡没有圆角,并且工作表的颜色发生了变化。此更改影响了我的属性表、页面和对话框。如何让应用程序看起来正常。 我使用 Windows 7。
谢谢。
【问题讨论】:
我通过参考***.com/questions/15996193/… 修复了它。 fakaoli 的回答对我有用。 您可以在同一个应用程序中混合使用 Unicode 和 MBCS,CString 会自动为您进行转换。 【参考方案1】:您需要使用 Unicode 字符集或修改您的文件 stdafx.h。在那里你可以看到这种代码:
#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_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
您可以删除第一个#ifdef _UNICODE
,最后删除#endif
,您将获得带有多字节字符集的新控件样式,但这不是一个好主意,一些MFC控件(尤其是VS中的新控件) 2010 ,例如 CMFCButton 控件)在具有新视图样式的非 Unicode 字符集程序中存在问题。
或者您需要改回 Unicode 应用程序或使用一些控件,您可以拥有Big problems。
【讨论】:
以上是关于更改字符集后 MFC 应用程序的视觉外观发生变化的主要内容,如果未能解决你的问题,请参考以下文章
vs2010 mfc项目配置属性的字符集为Unicode和多字节时,两者转换后使用的控件外观不一样