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


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

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

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

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

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

Приложения, написанные на рынках Восточной Азии, которые используют МБ CS (например, Япония), обычно поддерживают 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), МБ CS. Вы можете использовать параметр компилятора ресурсов /c для изменения кодовой страницы по умолчанию при компиляции ресурсов приложения.

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

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

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

См. также

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