Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Константы сообщений при работе с мышью и клавиатурой. Программная обработка констант сообщений




Процедура Translate Message передает структуру типа MSG обратно ядру Windows для преобразования константы сообщения, содержащей виртуальный код клавиши, в константу сообщения, содержащую физический код клавиши. Существует много кодовых таблиц, в которых одинаковым по функциональному назначению клавишам соответствуют различные физические коды. В кодировке Win-1251 символ кириллицы «А» имеет код 192, в кодировке ISO -176, а в кодировке КОИ-8 -225 (табл.18). Поэтому, чтобы не зависеть от конкретной кодовой таблицы, используемой в компьютере, применяют виртуальный код клавиш. Эту процедуру можно опустить, если Вы не работаете с клавиатурой. Например, если Вы нажали или отпустили клавишу на клавиатуре, то ядро сгенерирует сообщение структуры

MSG, в которой поле message будет содержать константу WM_KEYDOWN или WM_KEYUP, а поле wparam-код виртуальной клавиши. Перечислим некоторые коды виртуальных клавиш. VK_CONTROL –нажата клавиша CTRL;

VK_SHIFT –нажата клавиша SHIFT;

VK_MENU –нажата клавиша ALT;

VK_RETURN –нажата клавиша ENTER;

VK_BACK –нажата клавиша BACKSPACE;

VK_F1... VK_F9 –нажата клавиша из диапазона F1... F9; VK_INSERT –нажата клавиша INSERT;

VK_DELETE –нажата клавиша DELETE;

VK_SPACE –нажата клавиша SPACE;

VK_M-нажата клавиша M;

VK 1-нажата клавиша 1.

При помощи функции Translate Message константы сообщений WM_KEYDOWN и WM_KEYUP, содержа-щихся в поле message, преобразуются в константы WM_CHAR и WM_DEADCHAR, а код виртуальной клавиши, содержащийся в поле wparam, будет содержать код ANSI-клавиши. Процедура DispatchMessage выполняет диспетчеризацию сообщения, то есть вновь направляет сообщение в оконную функцию. Оконная функция Wind осуществляет непосредственную обработку сообщений. Первый параметр оконной функции-дескриптор окна, которому принадлежит сообщение, то есть дескриптор, возвращаемый функцией CreateWindowEx. Второй параметр-идентификатор (константа) сообщения, остальные-зависят от типа сообщения. Обычно wparam(3-йпараметр) содержит код сообщения(например, код виртуальной клавиши или код символа ANSI), в старшем слове параметра lparam содержится дескриптор окна, а в младшем слове-целое значение, уникальное для конкретного типа сообщения. Для ряда сообщений lparam содержит пару координат манипулятора мыши. Наша оконная функция обрабатывает всего лишь три сообщения-WM_PAINT, WM_LBUTTONUP, WM_DESTROY. Сообщение WM_PAINT позволяет отображать графическую информацию в окне и перерисовывать содержимое окна после его сворачивания. При нажатии и последующем отпускании и левой кнопки мыши генерируется сообщение WM_LBUTTONUP, которое поступает в цикл обработки сообщений оконной функции. В результате с помощью функции SendMessage генерируется сообщение к ОС Windows-WM_CLOSE, которое означает, что ОС должна закрыть окно (дескриптор ghWnd). Тоже сообщение посылается к Windows и при выборе команды Закрыть из системного меню или после нажатия клавиш ALT+F4. Определив, какому окну принадлежит сообщение, Windows генерирует ответное сообщение WM_DESTROY, которое, попав в оконную функцию, завершает процесс графического отображения информации в окне(функция EndPaint) и с помощью процедуры PostQuitMessage генерирует последнее сообщение -WM_QUIT. Получив это сообщение, функция GetMessege возвращает нулевое значение, и цикл обработки сообщений заканчивается и программа завершается. Ввод информации может происходить не только с клавиатуры, но и с использованием манипулятора мышь. При этом ядро Windows, прежде чем поместить сообщение в очередь, проверяет, не исходит ли предыдущее сообщение также от мыши, так как в большинстве случаев необходимо знать лишь конечную точку перемещения мыши.Таблица45

 

Константы сообщений Действие над мышью WM_MOUSEMOVE Перемещение WM_LBUTTONDOWN Нажата левая кнопка WM_LBUTTONUP Отпущена левая кнопка WM_MBUTTONDOWN Нажата средняя кнопка WM_MBUTTONUP Отпущена средняя кнопка WM_RBUTTONDOWN Нажата правая кнопка WM_RBUTTONUP Отпущена правая кнопка WM_LBUTTONDBLCLK Двойное нажатие левой кнопки WM_MBUTTONDBLCLK Двойное нажатие средней WM_RBUTTONDBLCLK Двойное нажатие правой кнопки





Поделиться с друзьями:


Дата добавления: 2014-12-23; Просмотров: 480; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.