Assembly-TASM: экранная кнопка в графическом режиме - PullRequest
1 голос
/ 15 марта 2019

Мне было интересно, как проще всего узнать, была ли нажата мышь между определенным диапазоном пикселей, то есть отобразить прямоугольную кнопку в графическом режиме и выяснить, нажал ли пользователь на нее.

Спасибо!

1 Ответ

2 голосов
/ 17 марта 2019

Та же самая функция драйвера мыши, которая информирует вас о щелчке мыши, также сообщает вам, где была мышь в тот момент.

Следующий код ожидает нажатия левой кнопки:

NoLeftClick:
    mov     ax, 0003h   ; MOUSE.GetMousePosition
    int     33h         ; -> BX CX DX
    test    bx, 1       ; Is left button down?
    jz      NoLeftClick ; No

Как только щелчок поступает, вы начинаете сравнивать координаты, которые вы получили в CX (X) и DX (Y) с координатами интересующего вас прямоугольника:

    cmp     cx, UpperLeftCornerX
    jb      Outside
    cmp     cx, LowerRightCornerX
    ja      Outside
    cmp     dx, UpperLeftCornerY
    jb      Outside
    cmp     dx, LowerRightCornerY
    ja      Outside
Inside:
    ...
Outside:
    ...

Для получения дополнительной информации о мыши API обратитесь к http://stanislavs.org/helppc/int_33.html

...