Электронный учебник:


Курс лекций:


Дополнительно:

Практикум:



Наши хостеры:

Обзор сообщений

18

            От  клавиатуры  могут поступать  четыре  сообщения :  WM_KEYDOWN ,  WM_KEYUP,  WM_SYSKEYDOWN  ,  WM_SYSKEYUP.  При  нажатии  клавиши  генерируется  сообщение   WM_KEYDOWN  или  WM_SYSKEYDOWN  ,  в  зависимости  от  того  ,  какая  нажата  клавиша и  была ли эта  клавиша  нажата  в  комбинации  с  <Alt>.  Соответственно при  отпускании  клавиши  генерируется  сообщение  WM_KEYUP или  WM_SYSKEYUP.  Параметр wParam  этих  сообщений  содержит ,  так  называемый  , код  виртуальной  клавиши  ,  соответствующий  некоторой  физической клавише.  Коды  виртуальных  клавиш  определены как константы  с  префиксом  VK_ .  Параметр  lParam  содержит  OEM  scan-код  клавиши (тот самый код ,  который  получают  в  регистре AH  программы  MS DOS  при вызове  INT  16h) ,  счетчик  повторов (при  удерживании  нажатой  клавиши  несколько сообщений  сливаются  в  одно  с  соответствующим  счетчиком  повторов),  флаг  расширенной  клавиатуры  (устанавливается  для  клавиш ,  имеющихся  только  на  101-клавишной  клавиатуре)  ,  код контекста ( 1 - комбинация с <Alt> ,  0 - нет) ,  флаги  предыдущего состояния  клавиши  и  флаг  изменения  состояния  клавиши (см. справочную документацию или электронный справочник WIN32 Programmer’s Reference системы программирования BorlandC++ 5.01). Для  получения  информации  о  состоянии  клавиш  используются  также  функции  GetKeyState , GetAsyncKeyState ,  GetKeyboardState , GetKeyboardType  ,  GetKeyNameText.

            Функция TranslateMessage  преобразует клавиатурные сообщения  в  символьные сообщения WM_CHAR ,  WM_SYSCHAR ,  WM_DEADCHAR  ,  WM_SYSDEADCHAR.  Как правило, приложение обрабатывает только сообщение WM_CHAR. Образованные  символьные  сообщения  помещаются  в  очередь сообщений приложения ,  причем оригинальные клавиатурные сообщения  из  этой  очереди  не  удаляются.  Символьные  сообщения  используются  для  непосредственного определения  символа по нажатой  клавише (код символа в стандарте ANSI заносится в параметр wParam сообщения, параметр lParam содержит ту же информацию, что и для рассмотренных выше оригинальных клавиатурных сообщений).  Следует  отметить ,  что Windows  использует  кодировку  символов ANSI , отличную от кодировки OEM  MS DOS.  Для  перекодировки  используются  функции  CharToOem ,  CharToOemBuff ,  OemToChar ,  OemToCharBuff , CharLower , CharLowerBuff , CharUpper , CharUpperBuff , CharNext , CharPrev ,  VkKeyScanEx. Для более подробной информации следует обратиться к справочной документации или электронному справочнику WIN32 Programmer’s Reference системы программирования BorlandC++ 5.01. Для  использования  функции TranslateMessage ее необходимо включить в цикл обработки сообщений :

предыдущаяследующая