WM_KEYDOWN 메시지가 TranslateMessage 함수에 의해 번역 될 때 키보드 포커스가 있는 창에 게시됩니다. WM_CHAR 메시지에는 누른 키의 문자 코드가 포함되어 있습니다.
#define WM_CHAR 0x0102
Parameters
-
wParam
-
키의 문자 코드입니다.
-
lParam
-
다음 표와 같이 반복 수, 검사 코드, 확장 키 플래그, 컨텍스트 코드, 이전 키 상태 플래그 및 전환 상태 플래그입니다.
비트 Meaning 0-15 현재 메시지의 반복 횟수입니다. 이 값은 사용자가 키를 누르고 있는 결과로 키 입력이 자동 반복되는 횟수입니다. 키 입력이 충분히 오래 유지되면 여러 개의 메시지가 전송되지만 그러나 반복 횟수는 누적되지 않습니다. 16-23 스캔 코드입니다. 값은 OEM에 따라 달라집니다. 24 키가 향상된 101 키 또는 102 키 키보드에 표시되는 오른쪽 ALT 및 Ctrl 키와 같은 확장 키인지 여부를 나타냅니다. 확장 키면 값이 1이고 확장 키가 아니면 0입니다. 25-27 예약; 사용하지 마세요. 28 메뉴 모드 플래그입니다. 메뉴가 활성화된 경우 값은 1입니다. 그렇지 않으면 값이 0입니다. 이십구 컨텍스트 코드입니다. 키를 누른 상태에서 Alt 키를 누르면 값이 1이고 그러지 않으면 0입니다. 30 이전 키 상태입니다. 메시지가 전송되기 전에 키가 눌려져 있으면 값이 1이고 키가 눌려져 있지 않으면 0입니다. 31 전환 상태입니다. 키를 놓고 있으면 값이 1이고 키를 누르고 있으면 0입니다. 자세한 내용은 키 입력 메시지 플래그를 참조하세요.
반환 값
애플리케이션이 이 메시지를 처리하는 경우 0을 반환해야 합니다.
Example
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
switch (message)
{
// ...
case WM_CHAR:
OnKeyPress(wParam);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}
GitHub의 Windows 클래식 샘플 예제입니다.
설명
WM_CHAR 메시지는 RegisterClass 함수의 유니코드 버전이 창 클래스를 등록하는 데 사용된 경우 wParam에서 UTF-16(16비트 유니코드 변환 형식) 코드 단위를 사용합니다. 그렇지 않으면 시스템은 현재 프로세스 코드 페이지의 문자를 제공합니다. 이 문자는 Windows 버전 1903(2019년 5월 업데이트) 이상에서 UTF-8로 설정할 수 있습니다. 자세한 내용은 창 클래스 등록 및 Windows 앱에서 UTF-8 코드 페이지 사용을 참조하세요.
Windows Vista WM_CHAR 메시지는UTF-16 서로게이트 쌍을 유니코드 창으로 보낼 수 있습니다. 필요한 경우 IS_HIGH_SURROGATE, IS_LOW_SURROGATE 및 IS_SURROGATE_PAIR 매크로를 사용하여 이러한 사례를 검색합니다.
누른 키와 생성된 문자 메시지 사이에는 일대일 대응이 반드시 있는 것은 아니므로 lParam 매개 변수의 상위 단어에 있는 정보는 일반적으로 애플리케이션에 유용하지 않습니다. 상위 단어의 정보는 WM_CHAR 메시지 게시 이전의 최신 WM_KEYDOWN 메시지에만 적용됩니다.
향상된 101 키 및 102 키 키보드의 경우 확장 키는 키보드의 주 섹션에서 오른쪽 Alt 키와 오른쪽 Ctrl 키입니다. 숫자 키패드의 왼쪽에 있는 클러스터의 INS, DEL, HOME, END, PAGE UP, PAGE DOWN 및 화살표 키 숫자 키패드의 나누기(/) 및 ENTER 키 일부 다른 키보드는 lParam 매개 변수에서 확장 키 비트를 지원할 수 있습니다.
WM_UNICHAR 메시지는 UTF-32를 사용한다는 점을 제외하고 WM_CHAR 동일합니다. ANSI 창에 유니코드 문자를 보내거나 게시하도록 설계되었으며 유니코드 보조 평면 문자를 처리할 수 있습니다.
Requirements
| Requirement | Value |
|---|---|
| 지원되는 최소 클라이언트 |
Windows 2000 Professional [데스크톱 앱만 해당] |
| 지원되는 최소 서버 |
Windows 2000 서버 [데스크톱 앱만 해당] |
| Header |
|
참고하십시오
- TranslateMessage
- WM_KEYDOWN
- WM_UNICHAR
- 키보드 입력
- 키보드 입력 대한