Операционная система Microsoft Windows 3.1 для программиста -том 1


Стандарты кодов символов - часть 4


Если используется однобайтовое представление символов, позиционирование сводится к увеличению или уменьшению значения указателя на один байт. Однако в некоторых национальных языках (например, в японском) набор символов OEM для представления каждого символа использует два байта. Для правильного позиционирования (с учетом различных наборов символов) необходимо использовать специальные функции AnsiNext и AnsiPrev, которые входят в состав программного интерфейса Windows.

Функция возвращает новое значение для указателя, передвинутое вперед по строке на одни символ:

LPSTR WINAPI AnsiNext(LPCSTR lpchCurrentChar);

Параметр функции указывает на текущий символ. Возвращаемое значение является указателем на следующий символ в строке или на закрывающий строку двоичный ноль.

Функция AnsiPrev выполняет передвижение указателя в направлении к началу строки:

LPSTR WINAPI AnsiPrev(LPCSTR lpchStart, LPCSTR lpchCurrentChar);

Первый параметр функции указывает на начало строки (на первый символ строки). Второй параметр - указатель на текущий символ. Функция возвращает значение указателя, соответствующее предыдущему символу или первому символу в строке, если при продвижении достигнуто начало строки.

В составе программного интерфейса Windows имеются функции для преобразования символа ANSI в код виртуальной клавиши (VkKeyScan) или в соответствующий OEM скан-код и состояние (OemKeyScan).

Функция VkKeyScan используется для преобразования кода символа ANSI в код и состояние виртуальной клавиши:

UINT WINAPI VkKeyScan(UINT uChar);

Параметр функции определяет символ ANSI, который будет преобразован в код виртуальной клавиши.

Младший байт возвращаемого значения содержит код виртуальной клавиши, старший - состояние клавиш сдвига (<Shift>, <Alt>, <Control>):

Значение Описание
1 При выводе символа была нажата клавиша сдвига
2 Символ является управляющим
3 - 5 Данная комбинация клавиш сдвига не используется для представления символов
6 Символ образован при помощи комбинации клавиш <Control+Alt>
7 Символ образован при помощи комбинации клавиш <Shift+Control+Alt>

Эта функция обычно используется приложениями, которые передают символы другим приложениям с помощью сообщений WM_KEYDOWN и WM_KEYUP (то есть симулируют ввод с клавиатуры).

Функция OemKeyScan преобразует символ OEM в скан-код и состояние для набора OEM:

DWORD WINAPI OemKeyScan(UINT uOemChar);

Параметр функции определяет символ OEM, который будет преобразован в скан-код.

Младшее слово возвращаемого значения содержит OEM скан-код для указанного символа.

Старшее слово указывает состояние клавиш сдвига для заданного символа. Если в этом слове установлен бит 1, нажата клавиша <Shift>, если бит 2 - клавиша <Control>.

Если преобразуемое значение не принадлежит к набору OEM, возвращается значение -1 (и в старшем, и в младшем слове).




Начало  Назад  Вперед



Книжный магазин