Visual C++ 中的 MBCS 支持

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

内存窗口不将数据的字节解释为 MBCS 字符,即使它可以将这些字节解释为 ANSI 或 Unicode 字符。 ANSI 字符的大小始终为 1 个字节,而 Unicode 字符的大小为 2 个字节。 在 MBCS 中,字符的大小可以是 1 个或 2 个字节,其解释取决于正在使用的代码页。 因此,内存窗口很难可靠地显示 MBCS 字符。 内存窗口无法知道哪些字节是字符的开头。 开发人员可以在内存窗口中查看字节值,并查找表中的值以确定字符表示形式。 这是可能的,因为开发人员知道基于源代码的字符串的起始地址。

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

支持输入法编辑器 (IME)

为使用 MBCS 的东亚市场(例如日本)编写的应用程序通常支持 Windows IME 来输入单字节字符和双字节字符。 Visual C++ 开发环境包含对 IME 的完全支持。

日语键盘不直接支持汉字字符。 IME 会将用其他日语字母(罗马字、片假名或平假名)输入的语音字符串转换为其可能的汉字表示形式。 如果有歧义,可从多个替代项中进行选择。 选择预期的汉字字符后,IME 会将两个 WM_CHAR 消息传递给控制应用程序。

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

如果希望应用程序的用户能够输入汉字字符,应用程序必须处理 Windows IME 消息。 有关 IME 编程的详细信息,请参阅输入方法管理器

Visual C++ 调试程序

Visual C++ 调试程序提供在 IME 消息上设置断点的功能。 此外,内存窗口还可显示双字节字符。

命令行工具

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

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

图形工具

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

另请参阅

支持多字节字符集 (MBCS)
MBCS 编程提示