short res = GetAsyncKeyState( VK_LBUTTON );
if( HIBYTE(res) != 0 ) {
// Кнопка в данный момент нажата
}
аналог OnMouseMove???
Существует ли фунция (не OnMouseMove ) , которая напрямую опрашивает мышь о нажатых клавишах?
ps: и с каких это пор OnMouseMove обрабатывает нажатия клавиш??
А с тех пор, как появился прототип. . .
afx_msg void OnMouseMove( UINT nFlags, CPoint point );
. . . и далее . . .
nFlags:
Указывает различные нажатые виртуальные клавиши. Этот параметр может быть любой комбинацией следующих значений:
MK_CONTROL Установлен если клавиша CTRL нажата.
MK_LBUTTON Установлен если левая кнопка мыши нажата.
MK_MBUTTON Установлен если средняя кнопка мыши нажата.
MK_RBUTTON Установлен если правая кнопка мыши нажата.
MK_SHIFT Установлен если SHIFT нажата.
:)
А зачем опрашивать - можно ловить сообщения мыши и запоминать.
Действительно, автор топика, видимо, не совсем понимает, что такое Windows API, причём явно мыслит категориями всяких там визуальных студий. В Windows API нет функции OnMouseMove. Всё делается через получение сообщений функцией GetMessage и некоторыми другими.
Hydra, you are wright!
Но, во-первых, какие сообщения мыши будут вызываться, когда она [мышь] неподвижна, а кнопка нажимается?
Правильный ответ, наверное, никакого ( пока не передвинешь мышь). Понятно, что это немного не то, чего хотелось бы. . .
[QUOTE=ShadyMan]
Действительно, автор топика, видимо, не совсем понимает, что такое Windows API, причём явно мыслит категориями всяких там визуальных студий. В Windows API нет функции OnMouseMove. Всё делается через получение сообщений функцией GetMessage и некоторыми другими.
[/QUOTE]
Во-вторых, логика, если существует GetCursorPos, то может быть есть и "GetMouseKey".
ShadyMan, Вы слышали о GetCursorPos? Сожалею, функция существует и без "визуальных студий".
И еще, согласен, может быть, действительно "автор топика, видимо, не совсем понимает, что такое Windows API, причём явно мыслит категориями всяких там визуальных студий." Не отрицаю.
P.S.
Речь совсем не о onMouseMove. . .
P.P.S.
"Автор топика", ShadyMan, это слишком гордо для меня, пожалуйста, Five_stars.
Цитата:
Но, во-первых, какие сообщения мыши будут вызываться, когда она [мышь] неподвижна, а кнопка нажимается?
Правильный ответ, наверное, никакого ( пока не передвинешь мышь). Понятно, что это немного не то, чего хотелось бы. . .
Когда нажимается кнопка, приходит сообщение WM_LBUTTONDOWN (или WM_RBUTTONDOWN и пр.). Даже при неподвижной мышке :-)
Цитата:
Во-вторых, логика, если существует GetCursorPos, то может быть есть и "GetMouseKey".
Получить состояние всех клавиш - клавиатурных или мышиных - можно с помощью GetAsyncKeyState():
Код:
Цитата:
ps: и с каких это пор OnMouseMove обрабатывает нажатия клавиш??
С момента появления сообщения WM_MOUSEMOVE, wParam которого содержит состояние клавиш в момент отправления сообщения.
Спасибо, tarekon, за GetAsyncKeyState.