WM_KEYDOWN 메시지
비시스템 키를 눌렀을 때 키보드 포커스가 있는 창에 게시됩니다. 비시스템 키는 ALT 키를 누르지 않았을 때 누른 키입니다.
#define WM_KEYDOWN 0x0100
매개 변수
-
wParam
-
비시스템 키의 가상 키 코드입니다. Virtual-Key 코드를 참조하세요.
-
lParam
-
반복 횟수, 스캔 코드, 확장 키 플래그, 컨텍스트 코드, 이전 키 상태 플래그 및 전환 상태 플래그로, 다음과 같습니다.
비트 의미 0-15 현재 메시지의 반복 횟수입니다. 이 값은 사용자가 키를 누르고 있는 결과로 키 입력이 자동 반복되는 횟수입니다. 키 입력이 충분히 오래 유지되면 여러 개의 메시지가 전송되지만 반복 횟수는 누적되지 않습니다. 16-23 스캔 코드입니다. 이 값은 OEM에 따라 달라집니다. 24 키가 고급 101키 또는 102키 키보드에 표시되는 오른쪽 Alt 및 Ctrl 키와 같은 확장 키인지 여부를 나타냅니다. 확장 키면 값이 1이고 확장 키가 아니면 0입니다. 25-28 예약되어 있으므로 사용하지 마세요. 29 컨텍스트 코드입니다. WM_KEYDOWN 메시지에 대한 값은 항상 0입니다. 30 이전 키 상태입니다. 메시지가 전송되기 전에 키가 눌려져 있으면 값이 1이고 키가 눌려져 있지 않으면 0입니다. 31 전환 상태입니다. WM_KEYDOWN 메시지에 대한 값은 항상 0입니다. 자세한 내용은 키 입력 메시지 플래그를 참조하세요.
반환 값
애플리케이션은 이 메시지를 처리하는 경우 0를 반환해야 합니다.
예
LRESULT CALLBACK HostWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
case WM_KEYDOWN:
if (wParam == VK_ESCAPE)
{
if (isFullScreen)
{
GoPartialScreen();
}
}
break;
// ...
default:
return DefWindowProc(hWnd, message, wParam, lParam);
}
return 0;
}
GitHub의 Windows 클래식 샘플 예제입니다.
설명
F10 키를 누르면 DefWindowProc 함수가 내부 플래그를 설정합니다. DefWindowProc가 WM_KEYUP 메시지를 받으면 함수는 내부 플래그가 설정되어 있는지 확인하고, 설정된 경우 최상위 창에 WM_SYSCOMMAND 메시지를 보냅니다. 메시지의 WM_SYSCOMMAND 매개 변수는 SC_KEYMENU로 설정됩니다.
자동 재현 기능으로 인해 WM_KEYUP 메시지가 게시되기 전에 둘 이상의 WM_KEYDOWN 메시지가 게시될 수 있습니다. 이전 키 상태(비트 30)를 사용하여 WM_KEYDOWN 메시지가 첫 번째 누름 전환을 나타내는지 반복되는 누름 전환을 나타내는지를 확인할 수 있습니다.
고급 101키 및 102키 키보드에서 확장 키는 키보드의 주요 섹션에 있는 오른쪽 Alt 및 Ctrl 키, 숫자 키패드 왼쪽에 있는 클러스터의 Ins, Del, Home, End, Page Up, Page Down 및 화살표 키, 숫자 키패드의 나누기(/) 및 Enter 키입니다. 다른 키보드는 lParam 매개 변수의 확장 키 비트를 지원할 수 있습니다.
애플리케이션은 wParam을 전혀 변경하지 않고 TranslateMessage에 전달해야 합니다.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 |
Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 |
Windows 2000 Server[데스크톱 앱만] |
헤더 |
|