Visual C++ 中的 MBCS 支持

更新:2007 年 11 月

在支持 MBCS 的 Windows 2000 或 Windows XP 操作系统版本上运行时,除内存窗口外,Visual C++ 开发系统(包括集成的源代码编辑器、调试器和命令行工具)支持 MBCS。

内存窗口不把字节数据解释为 MBCS 字符,即使它能够把它们解释为 ANSI 或 Unicode 字符。ANSI 字符的大小始终为 1 个字节,Unicode 字符的大小为 2 个字节。使用 MBCS,字符的大小可以是 1 个或 2 个字节,其解释依赖于正在使用的代码页。因此,内存窗口很难可靠地显示 MBCS 字符。内存窗口无法知道字符从哪个字节开始。开发人员可以在内存窗口中查看字节值,然后在表中查找该值,以确定字符表示形式。开发人员根据源代码可以知道字符串的开始地址,因此这是可行的。

Visual C++ 在任何适合条件下都接受双字节字符。这包括对话框中的路径名和文件名,以及 Visual C++ 资源编辑器中的文本项(例如,对话框编辑器中的静态文本和图标编辑器中的静态文本项)。此外,预处理器识别一些双字节指令(例如,#include 语句中的文件名),作为 code_segdata_seg 伪指令的参数。在源代码编辑器中接受注释和字符串中的双字节字符,但在 C/C++ 语言元素(如变量名)中不接受。

对输入法编辑器 (IME) 的支持

为使用 MBCS 的东亚市场(如日本)编写的应用程序通常支持 Windows IME 输入单字节和双字节字符。Visual C++ 开发环境完全支持 IME。有关更多信息,请参见 IME 示例:演示如何控制 IME 模式和实现 IME 级别 3

日文键盘不直接支持日文汉字字符。IME 将用其他日文字母表(罗马字、片假名或平假名)输入的语音字符串转换为其可能的日文汉字表示形式。如果存在多义性,则可以从几个选项中选择。选择日文汉字字符后,IME 将两条 WM_CHAR 消息传递给控制应用程序。

IME 由 Alt+` 组合键激活,显示为一组按钮(一个指示符)和一个转换窗口。应用程序将窗口定位在文本插入点。应用程序必须通过重新定位转换窗口使其符合目标窗口的新位置或大小来处理 WM_MOVEWM_SIZE 消息。

如果希望应用程序的用户具有输入日文汉字字符的能力,应用程序必须能够处理 Windows IME 消息。有关 IME 编程的更多信息,请参见输入法编辑器

Visual C++ 调试器

Visual C++ 调试器提供在 IME 消息上设置断点的能力。另外,“内存”窗口可以显示双字节字符。

命令行工具

Visual C++ 命令行工具(包括编译器、NMAKE 和资源编译器 (RC.EXE))支持 MBCS。编译应用程序的资源时,可以使用资源编译器的 /c 选项以更改默认的代码页。

若要在源代码编译时更改默认的区域设置,请使用 #pragma setlocale

图形工具

基于 Windows 的 Visual C++ 工具(如 Spy++ 和资源编辑工具)完全支持 IME 字符串。

请参见

概念

支持多字节字符集 (MBCS)

MBCS 编程提示