Мышиный штат Винапи - PullRequest
       38

Мышиный штат Винапи

1 голос
/ 21 января 2011

Есть ли способ получить состояние мыши (положение, состояние кнопок), используя winapi в C ++? Я не хочу использовать сообщения Windows (WM_MOUSEMOVE, WM_LBUTTONDOWN и т. Д.).

Спасибо!

Ответы [ 2 ]

2 голосов
/ 21 января 2011

Похоже, вы ищете GetCursorInfo и GetKeyState . Последний вы вызываете с кодами виртуальной клавиши , которые задают интересующую кнопку мыши.

1 голос
/ 24 января 2011

Если вам нужна только позиция курсора, вы можете просто использовать GetCursorPos (). Помните, что оба GetCursorInfo () и GetCursorPos () возвращают экранные координаты. Используйте ScreenToClient () для преобразования в смещения клиентской области.

Хотя ОП не хотел использовать Сообщения Windows, я просто хотел упомянуть кое-что в качестве sidenote.
Что-то, что я обнаружил, было то, что, получая позицию курсора как часть обработчика сообщений (например, WM_SETCURSOR), большая часть литературы рекомендует использовать GetMessagePos () для получения позиции курсора во время отправки сообщения. Однако в позиции до мышь перемещалась, а не после. Таким образом, позиция возвращалась с «запаздыванием» за пикселем при попытке обнаружения при наведении курсора на область.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...