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 함수가 내부 플래그를 설정합니다. DefWindowProcWM_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[데스크톱 앱만]
헤더
Winuser.h(Windows.h 포함)

추가 정보