WindowsAPI를 이용하여 사용자 입력, 그 중에서 키보드 입력 처리를 하기 위해선 WM_KEYDOWN
, WM_KEYUP
메시지 코드를 사용해야 한다.
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_KEYDOWN:
// 키가 눌렸을 때 처리
// 키에 대응되는 정수값 확인
cout << "WM_KEYDOWN: " << (int)wParam << endl;
break;
case WM_KEYUP:
// 키가 놓였을 때 처리
break;
case WM_CHAR:
// 문자 입력 처리
break;
default:
return DefWindowProc(hwnd, msg, wParam, lParam);
}
return 0;
}
WM_KEYDOWN
은 키보드의 특정 키가 눌린 순간 발생하는 윈도우 메시지다. 이 때 입력된 키에 대한 값은 wParam
에 정수형으로 전달된다. 따라서 입력된 키에 대응하는 정수값을 확인해보려면 wParam
을 정수형으로 캐스팅한 후 값을 확인해보면 된다. WM_KEYUP
은 키가 떼어질 때 발생하는 윈도우 메시지다.
키보드를 통해 입력된 값이 문자라면 WM_CHAR
가 추가적으로 호출된다. WM_KEYDOWN
에 대한 메시지 처리가 완료되면 TranslateMessage
함수가 호출되면서 입력된 키가 문자인 경우에는 WM_CHAR
메시지 코드를 다시 한 번 호출하게 된다. 따라서 WM_KEYDOWN
이 첫 번째로 호출되고, TranslateMessage
함수를 통해 WM_CHAR
메시지가 호출되면서 한 번의 키 입력으로 두 개의 WindowProc
함수가 호출되는 것이다.
'Windows API' 카테고리의 다른 글
마우스 입력 (0) | 2024.06.09 |
---|---|
윈도우 메시지 처리 (0) | 2024.06.09 |