MFC 命令按钮控件如何在多字节字符集项目中显示?
Posted
技术标签:
【中文标题】MFC 命令按钮控件如何在多字节字符集项目中显示?【英文标题】:How can the MFC Command Button Control display in a Multi-Byte character-set project? 【发布时间】:2012-06-08 07:42:51 【问题描述】:我在 Visual Studio 2010 中使用“命令按钮”MFC 控件时遇到问题。
创建基于对话框的非 Unicode MFC 项目时
在初始对话框中添加命令按钮控件时
当我构建并运行我的项目时,我得到:
当我点击其中一个按钮应该是复选框的区域时:
现在,我编辑项目属性并切换到 Unicode 字符集:
当我构建并运行时,Bingo。
我的问题是:有没有办法在多字节字符集中工作?
谢谢!
【问题讨论】:
【参考方案1】:Common Control DLL 的多字节版本不支持某些内容。
我已经发现 CEdit::SetCueBanner 不适用于多字节构建,但似乎所有 "Windows Vista Common Controls" require you to build with the Unicode character set.
【讨论】:
【参考方案2】:所有 Windows 通用控件和 Windows 内核本身都在内部作为 UNICODE 实现。确实存在对 MBCS 的支持以实现向后兼容性。因此,如果您使用 ASCII/MBCS 版本的 API(如 SetWindowTextA()
),它基本上会将所有内容从 MBCS 转换为 UNICODE。微软正试图迫使开发人员从 MBCS 迁移到 UNICODE。
为了解决您的问题,没有 MBCS 版本的命令按钮。所以你必须切换到 UNICODE 字符集。时机已到。
【讨论】:
以上是关于MFC 命令按钮控件如何在多字节字符集项目中显示?的主要内容,如果未能解决你的问题,请参考以下文章
MFC/VC 在多文档MDI程序中 子窗口初始最大化显示 如何去掉菜单栏右侧的最小化及向下还原按钮