Ассемблер для Windows



         

Данный раздел будет поевящен обработке команд мыши и клавиатуры - часть 2


Но вернемся к типу события. Всего системой зарезервировано пять типов событий:

KEY_EVENT equ 1h ; клавиатурное событие

MOUSE_EVENT equ 2h ; событие с мышью

WINDOW_BUFFER_SIZE_EVENT equ 4h ; изменился размер окна

MENU_EVENT equ 8h ; зарезервировано

FOCUS_EVENT equ 10h; зарезервировано

А теперь разберем значение других байт структуры в зависимости от происшедшего события.

Событие KEY_EVENT

СмещениеДлинаЗначение

+44При нажатии клавиши значение поля больше нуля.

+82Количество повторов при удержании клавиши.

+102Виртуальный код клавиши.

+122Скан-код клавиши.

+142Для функции ReadConsoleInputA-младший байт равен ASCII-коду клавиши. Для функции ReadConsoleInputW слово содержит код клавиши в двухбайтной кодировке (Unicode).

+164Содержится состояния управляющих клавиш. Может являться суммой следующих констант:

RIGHT_ALT_PRESSED equ 1h

LEFT_ALT_PRESSED equ 2h

RIGHT_CTRL_PRESSED equ 4h

LEFT_CTRL_PRESSED equ 8h

SHIFT_PRESSED equ 10h

NUMLOCK_ON equ 20h

SCROLLLOCK_ON equ 40h

CAPSLOCK_ON equ 80h

ENHANCED_KEY equ 100h
Смысл констант очевиден.

Событие MOUSE_EVENT

СмещениеДлинаЗначение

+44Младшее слово - Х-координата курсора мыши,
старшее слово - Y-координата мыши.

+8 4Описывает состояние кнопок мыши. Первый бит - левая кнопка, второй бит - правая кнопка, третий бит - средняя кнопка. Бит установлен - кнопка нажата.

+12 4Состояние управляющих клавиш. Аналогично предыдущей таблице.

+164Может содержать следующие значения:

MOUSE_MOV equ 1h; было движение мыши

DOUBLE_CL equ 2h; был двойной щелчок

Событие WINDOW_BUFFER_SIZE_EVENT

По смещению +4 находится двойное слово, содержащее новый размер консольного окна. Младшее слово - это размер по X, старшее слово - размер по Y. Да, когда речь идет о консольном окне, все размеры и координаты даются в "символьных" единицах.

Что касается последних двух событий, то там также значимым является двойное слово по смещению +4, Ниже на Рисунок 2.2.4 дана простая программа обработки консольных событий.




Содержание  Назад  Вперед