更改字符集后 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 应用程序的视觉外观发生变化的主要内容,如果未能解决你的问题,请参考以下文章

如何从 MFC 更改下一个字符将放置在编辑控件中的位置?

vs2010 mfc项目配置属性的字符集为Unicode和多字节时,两者转换后使用的控件外观不一样

Autolayout UILabel 高度在第二个视图外观上发生变化

编辑控件 MFC 中光标位置更改时是不是有通知代码?

HTML img src 没有动态更新

无需太多更改即可将 MFC 应用程序设置为最大分辨率