Поддержка многобайтовой кодировки 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.
См. также
Поддержка многобайтовых кодировок
Советы по программированию многобайтовой кодировки