Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
WinAPI.docx
Скачиваний:
49
Добавлен:
16.12.2018
Размер:
3.43 Mб
Скачать

5.7 Наборы символов Windows

Уже упоминалось, что буквенные клавиши, если их нажатию предшествует нажатие клавиши немого символа, вырабатывают сообщения WM_CHAR, где параметр wParam является кодом ASCII для символа с диакритическим знаком. Это может вызвать легкое замешательство, поскольку в наборе кодов ASCII отсутствуют какие бы то ни было символы с диакритическими знаками. Так что же на самом деле представляет собой параметр wParam? Ответ на этот вопрос требует, чтобы мы разобрались с наборами символов, что, как вначале может показаться, больше относится к шрифтам. Однако, эта тема также жизненно важна и для обработки клавиатуры.

Стандартный 7-битный набор символов ASCII определяет коды от 0 до 31 (0x1F) и 127 (0x7F) как управляющие символы, а также коды от 32 (0x20) до 126 (0x7E) как символы, которые могут быть выведены на экран. Здесь нет ни одного символа с диакритическим знаком. Поскольку в персональных компьютерах используются байты, состоящие из 8 битов, то производители компьютеров часто определяют наборы символов, использующие 256 кодов вместо 128 кодов ASCII. Дополнительные коды могут назначаться символам с диакритическими знаками. В итоге получается "расширенный набор символов" (extended character set), который включает в себя набор символов ASCII и до 128 других символов.

Если бы в Windows поддерживался такой расширенный набор символов, выводить на экран символы с диакритическими знаками было бы просто. Но в Windows обычный расширенный набор символов не поддерживается. В Windows поддерживается два расширенных набора символов. К несчастью, наличие двух наборов символов не делает их использование вдвое проще.

5.7.1 Набор символов oem

Для начала давайте обратимся к аппаратуре, на которой работает Windows — к персональным компьютерам IBM и совместимым с ними. В начале 80-х годов производители IBM PC решили расширить набор символов ASCII так, как показано на рис. 5.7. Коды от 0x20 до 0x7E — это выводимые на дисплей символы из набора символов ASCII. Оставшиеся коды являются нестандартными или, по крайней мере, тогда являлись нестандартными.

Этот набор символов не может игнорироваться. Он закодирован в миллионах микросхем ПЗУ в видеоадаптерах, принтерах и микросхемах BIOS. Он был растиражирован в аппаратуре многочисленных производителей IBM-совместимых компьютеров и периферии. Этот набор символов стал частью того, что обозначается фразой "стандарт IBM". Для множества программ, работающих в текстовом режиме и написанных не для Windows, требуется этот расширенный набор символов, поскольку в них для вывода информации на экран используются символы псевдографики — символы блоков и линий (коды от B0H до DFH).

Здесь есть только одна проблема: расширенный набор символов IBM не предназначен для Windows. Во-первых, символы псевдографики, которые обычно используются в программах персональных компьютеров для приложений, работающих в текстовом режиме, в Windows не нужны, поскольку Windows работает с настоящей графикой. Если вы хотите нарисовать в Windows горизонтальную линию, то гораздо легче нарисовать эту линию, а не выводить на экран строку символов с кодом 0xC4. Во-вторых, греческий алфавит и математические символы менее важны для Windows, чем буквы с символами ударения, которые используются в большинстве европейских языков. Программы, для которых нужен вывод на экран математических символов, гораздо лучше их рисуют с помощью графических функций.

Короче говоря, Windows поддерживает набор символов IBM, но им придается второстепенное значение — в основном он используется в старых приложениях, работающих в окне. Приложения Windows обычно не используют набор символов IBM. В документации по Windows набор символов IBM упоминается как "набор символов OEM" (OEM character set). Набор символов OEM более точно определяется как набор символов национального алфавита для машины, работающей под Windows.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]