Если вы хотите узнать текущее состояние клавиш прямо сейчас , вы можете использовать GetAsyncKeyState()
с аргументом VK_LSHIFT
или VK_RMENU
для сдвига влево и правый альт соответственно. Обязательно проверьте самый значимый бит результата, поскольку результат содержит более одного бита информации, например,
if(GetAsyncKeyState(VK_LSHIFT) & 0x8000)
; // left shift is currently down
Если вместо этого вы хотите получать уведомления о нажатиях клавиш, а не опрашивать их асинхронно, вам следует прослушать уведомление окна WM_KEYDOWN
. Поместите что-то вроде этого в обработчик сообщений вашего окна:
LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{
switch(msg)
{
...
case WM_KEYDOWN:
if(wparam == VK_LSHIFT)
; // left shift was pressed
// etc.
break;
}
}
Вам также потребуется обработать сообщение WM_KEYUP
, чтобы узнать, когда будут выпущены ключи.