일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- MouseClick
- EnvSet
- IF (식)
- 배열
- SetControlDelay
- 식의 설명
- StringGetPos
- EnvAdd
- SetTitleMatchMode
- IfInString
- autohotkey
- SetKeyDelay
- Menu
- API
- IfWinExist
- SetEnv
- ControlSend
- Var:=식
- ControlGetText
- if
- EnvSub
- EnvDiv
- if(식)
- 함수
- DetectHiddenWindows
- Threads
- EnvMult
- Blocks
- 식
- SetMouseDelay
- Today
- Total
ㄴrㅎnㅂrㄹrㄱi
WM_KEYDOWN (WM_KEYDOWN 메세지는, 비시스템키가 밀렸을 경우에...) 본문
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 이후
'API 관련 > Win32 API 함수' 카테고리의 다른 글
OSVERSIONINFO (operating system의 버젼 정보가 격납 .이 구조체는 GetVersionEx 함수로 사용) (0) | 2007.11.09 |
---|---|
INITCOMMONCONTROLSEX (DLL (으)로부터 코먼 컨트롤 클래스를 로드하는데 사용되는 정보가 격납) (0) | 2007.11.09 |
WM_SYSCOMMAND (시스템 메뉴(컨트롤 메뉴)의 아이템이 선택 ...) (0) | 2007.11.09 |
WM_KEYUP (밀리고 있던 비시스템키가 떼어 놓아졌을 경우에...) (0) | 2007.11.09 |
stop (0) | 2007.11.09 |