일반적인 C++ 메시지 루프처럼 보이는이
MSG msg;
while (GetMessage(&msg, null, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
TranslateMessage의 기능은 당신이 당신이 메시지를 WM_KEYDOWN 통과해야 할 필요가 WM_CHAR 메시지를보고 싶다면, WM_KEYDOWN 메시지에서 WM_CHAR 메시지를 생성하는 것입니다
그것. WM_CHAR 메시지에 대해 신경 쓰지 않는다면, 건너 뛰고 다음과 같이 할 수 있습니다. onKeyDown에와 OnKeyUp을 메시지는 문자보다는 WPARAM을 복용으로 정의된다
extern void OnKeyDown(WPARAM key);
extern void OnKeyUp(WPARAM key);
MSG msg;
while (GetMessage(&msg, null, 0, 0))
{
if (msg.message == WM_KEYDOWN)
OnKeyDown (msg.wParam);
else (msg.message == WM_KEYUP)
OnKeyUp(msg.wParam);
else
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
알 수 있습니다. WM_KEYDOWN 및 WM_KEYUP의 값이 char에 들어 맞는 값으로 제한되지 않기 때문입니다. WM_KEYDOWN
여기서 문제는 키 업과 키 다운을 실행하는 코드가 있지만, 이식성이없는 코드가 있다는 것입니다. WPARAM을 더 휴대용으로 변환하는 방법이 필요합니다. 대신 모든 크로스 플랫폼 코드를 가져 와서 창만 만들어 가상 키 값을 테스트 할 수 있습니다. 따라서 'char'가 사용됩니다. 나는 또한 모든 문자를 변환하는 데 하루의 코드를 보내고 싶지 않다. –