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程序中 子窗口初始最大化显示 如何去掉菜单栏右侧的最小化及向下还原按钮

如何在 MFC 多字节应用程序中显示西里尔文字?

MFC如何配置使用Win7风格的控件而不是XP风格控件

在MFC中如何在拆分按钮控件的BCN_DROPDOWN事件上显示列表框

MFC 中的 OwnerDrawn 控件

Visual Studio C ++组合框控件不适用于多字节字符集