관리 메뉴

ㄴrㅎnㅂrㄹrㄱi

WM_KEYDOWN (WM_KEYDOWN 메세지는, 비시스템키가 밀렸을 경우에...) 본문

API 관련/Win32 API 함수

WM_KEYDOWN (WM_KEYDOWN 메세지는, 비시스템키가 밀렸을 경우에...)

님투 2007. 11. 9. 01:33
반응형

WM_KEYDOWN

WM_KEYDOWN 메세지는, 비시스템키가 밀렸을 경우에, 키보드 포커스를 가지는 윈도우에 포스트됩니다.비시스템키란, [alt] 키가 밀리지 않을 때에 밀린 키입니다.

윈도우는, 윈도우 프로시저를 개입시켜 이 메세지를 받아들입니다.

#define  WM_KEYDOWN      0x0100

nVirtKey = wParam;         // 가상 키코드
lKeyData = lParam;         // 키 데이터

파라미터

nVirtKey

wParam 파라미터의 값.

비시스템키의 가상 키코드하지만 지정됩니다.

lKeyData

lParam 파라미터의 값.

리피트 카운트 (유저가 키를 계속 눌렀을 때에 반복하는 키 조작의 회수) , 스캔 코드, 키 변환 코드, 직전의 키 상태, 및 문맥 코드가 지정됩니다.

비트 의미
0 ~ 15

현재의 메세지의 리피트 카운트가 지정됩니다.이것은, 유저가 키를 계속 누른 것 에 의해 자동적으로 반복해진 키스트로크(keystroke)의 회수입니다.매우 계속 길게 밀렸을 경우는, 메세지는 보내집니다만, 카운트는 누적되지 않습니다.

16 ~ 23

스캔 코드가 지정됩니다.이 값은 OEM 의존입니다.

24

확장 키가 밀렸는지가 지정됩니다.확장 키의 경우는 1 하지만, 그 이외의 키에서는 0 하지만 지정됩니다.

25 ~ 28

사용되지 않습니다.

29

문맥 코드가 격납됩니다. WM_KEYDOWN 메세지에서는 항상 0 (이)가 됩니다.

30

직전의 키 상태가 지정됩니다.메세지가 보내지기 전에 키가 밀리고 있었을 경우는 1 하지만, 떼어 놓아지고 있었을 경우는 0 하지만 지정됩니다.

31

변환 상태가 지정됩니다. WM_KEYDOWN 메세지에서는 항상 0 (이)가 됩니다.

해설

[f10] 키가 밀리고 있는 경우는, DefWindowProc 함수는 내부 플래그를 세트 합니다. DefWindowProc 함수가 WM_KEYUP 메세지를 받아들이면, 함수는 내부 플래그가 설정되어 있는지 어떤지를 체크해, 설정되어 있는 경우에는 톱 레벨 윈도우에 WM_SYSCOMMAND 메세지를 보냅니다.이 때의 wParam 파라미터에는 SC_KEYMENU 하지만 세트 됩니다.

오토매틱 기능에 의해서,1회의 키의 눌러 인하로 복수의 WM_KEYDOWN 메세지가 보내져 오는 일이 있습니다.직전의 키 상태( lKeyData 파라미터의 비트 30)(을)를 참조하는 것으로, 최초로 밀린 것에 의한 것일까, 계속해 밀린 것에 의한 것일까를 조사할 수 있습니다.

대응 정보

Windows 95 이후 / Windows NT 3.1 이후

반응형
Comments