Сборник по задачам и примерам Assembler



Организация низкоуровнего консольного ввода-вывода - часть 3


ш dwMousePosition — координаты мыши в окне консоли (в символьных координатах);

м dwButtonState — состояние кнопок мыши в момент возникновения события, при нажатии кнопок устанавливаются следующие биты (при одновременном нажатии устанавливается несколько соответствующих битов):

  • если установлен бит 0 ноля dwButtonState, то в момент наступления события была нажата левая кнопка мыши;
  • если установлен бит 1 поля dwButtonState, то в момент наступления события была нажата правая кнопка мыши;
  • если установлен бит 2 поля dwButtonState, то в момент наступления события была нажата средняя кнопка мыши, если она есть;
  • dwControlKeyState — поле описывает состояние управляющих клавиш клавиатуры в момент наступления события мыши (если одновременно нажато несколько клавиш, то значение в этом поле является результатом операции логического сложения ИЛИ перечисленных ниже значений):
  • • RIGHT_ALT_PRESSED=0001h - нажата правая клавиша Alt;

    • LEFT_ALT_PRESSED=0002h - нажата левая клавиша Alt;

    • RIGHT_CTRL_PRESSED=0004h — нажата правая клавиша

    Ctrl; LEFT_CTRL_PRESSED=OOO8h — нажата левая клавиша Ctrl;

    • SHIFT_PRESSED=OOlOh - нажата любая клавиша SHIFT;

    • NUMLOCK_ON=0020h - индикатор NumLock включен;

    • SCROLLLOCK_ON=0040h — индикатор ScrollLock включен;

    • CAPSLOCK_ON=0080h — индикатор CapsLock включен;

    ENHANCED_KEY=0100h — нажата клавиша расширенной клавиатуры (101 и 102 клавиши): Ins, Del, Home, End, Page Up, Page Down, «-, t, -», I, / или Enter;

    Ш dwEventFl ags — поле содержит одно из двух значений: »

    MOUSE_MOVED=0001h — перемещение мыши;

    • DOUBLE_CLICK=0002h — выполнен двойной щелчок мыши.

  • Ве приведена демонстрационная программа обработки событий мыши (prg05_13. asm), которые отслеживаются следующим образом: нажатие левой кнопки приводит к выводу сообщения в позиции нажатия, нажатие правой кнопки приводит к завершению работы программы.

    В заключение обращу внимание читателя на то, что API Win32 имеет функцию Mouse_Event, которая позволяет генерировать события, соответствующие реальным движениям мыши и щелчкам ее кнопок. Тем самым API Win32 предоставляет механизм для создания обучающих и демо-версий программ. Формат этой функции:




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