Поделиться через


Поддержка многобайтовой кодировки MBCS в Visual C++

При запуске в версии Windows с поддержкой MBCS система разработки Visual C++ (включая интегрированный редактор исходного кода, отладчик и средства командной строки) включена в MBCS, за исключением окна памяти.

Окно памяти не интерпретирует байты данных как символы MBCS, даже если он может интерпретировать их как символы ANSI или Юникода. Символы ANSI всегда равны 1 байтам размера, а символы Юникода — 2 байта. При использовании MBCS символы могут иметь размер 1 или 2 байта, а их интерпретация зависит от используемой кодовой страницы. Из-за этого окно памяти трудно надежно отображать символы MBCS. Окно памяти не может знать, какой байт является началом символа. Разработчик может просмотреть значения байтов в окне памяти и найти значение в таблицах, чтобы определить представление символов. Это возможно, так как разработчик знает начальный адрес строки на основе исходного кода.

Visual C++ принимает двойные байтовые символы, где бы это ни было уместно. Сюда входят имена путей и имена файлов в диалоговых окнах и текстовых записях в редакторе ресурсов Visual C++ (например, статический текст в редакторе диалоговых окон и статических текстовых записях в редакторе значков). Кроме того, препроцессор распознает некоторые директивы двойного байта, например имена файлов в инструкциях, а также в #include качестве аргументов для code_seg и data_seg pragmas. В редакторе исходного кода двойные байты в комментариях и строковых литералах принимаются, хотя и не в элементах языка C/C++ (например, имена переменных).

Поддержка редактора методов ввода (IME)

Приложения, написанные на рынках Восточной Азии, которые используют MBCS (например, Япония), обычно поддерживают Windows IME для ввода как одиночных, так и двойных байтовых символов. Среда разработки Visual C++ содержит полную поддержку IME.

Японские клавиатуры не поддерживают напрямую символы Канджи. IME преобразует фонетическую строку, введенную в один из других японских алфавитов (Ромаджи, Катакана или Хирагана) в возможные представления Канджи. Если существует неоднозначность, можно выбрать из нескольких альтернативных вариантов. Когда вы выбрали предполагаемый символ Kanji, IME передает два WM_CHAR сообщения в управляющее приложение.

IME, активированный сочетанием клавиш ALT+, отображается как набор кнопок (индикатор) и окно преобразования. Приложение помещает окно в точку вставки текста. Приложение должно обрабатывать WM_MOVE и WM_SIZE отправлять сообщения, переместив окно преобразования в соответствии с новым расположением или размером целевого окна.

Если вы хотите, чтобы пользователи приложения имели возможность вводить символы Kanji, приложение должно обрабатывать сообщения Windows IME. Дополнительные сведения о программировании IME см. в разделе "Диспетчер методов ввода".

Отладчик Visual C++

Отладчик Visual C++ предоставляет возможность задавать точки останова в сообщениях IME. Кроме того, в окне памяти могут отображаться двойные байтовые символы.

Программы командной строки

Средства командной строки Visual C++, включая компилятор, NMAKE и компилятор ресурсов (RC.EXE), включены в MBCS. Вы можете использовать параметр компилятора ресурсов /c для изменения кодовой страницы по умолчанию при компиляции ресурсов приложения.

Чтобы изменить языковой стандарт по умолчанию во время компиляции исходного кода, используйте #pragma setlocale.

Графические инструменты

Средства на основе Windows Visual C++, такие как Spy++ и средства редактирования ресурсов, полностью поддерживают строки IME.

См. также

Поддержка многобайтовых кодировок
Советы по программированию многобайтовой кодировки