(win32) 키보드 메시지
10452 단어 win32 학습 노트
이 키보드 메시지를 받는 창을 입력 초점이 있는 창이라고 합니다.포커스를 입력하는 창은 현재 활성 창이거나 현재 활성 창을 부모 창으로 하는 창일 것입니다.
키보드 메시지는 시스템 메시지 대기열에 저장된 다음 프로그램 메시지 대기열에 보냅니다.그러나 프로그램이 하나의 메시지를 처리한 후에만 시스템 메시지 대기열이 다음 메시지를 프로그램 메시지 대기열에 넣을 수 있습니다.
키 조합, 예를 들어 Q 키는 Ctrl, Shift, Gaps Lock 키와 조합할 수 있다.문자의 키 조합에 대해 윈도우즈는 키 메시지를 보내는 동시에 문자 메시지를 보낸다.Shift, Tab 같은 문자의 키 메시지가 생성되지 않고 키 메시지만 전송됩니다.
비시스템 키 WMKEYDOWN WM_KEYUP 시스템 키 WMSYSKEYDOWN WM_SYSKEYUP 키를 계속 누르면 윈도우즈는 창 프로세스에 일련의 WMKEYDOWN(또는 WM SYSKEYDOWN).이 키가 풀리면 윈도우즈가 창에 전송되는 WMKEYUP(또는 WM SYSKEYUP).GetMessageTime 함수를 호출하여 키를 누르거나 놓는 시간을 얻을 수 있습니다.
Alt 키와 기타 키의 조합은 일반적으로 WMSYSKEYDOWN 및 WMSYSKEYUP 소식입니다.만약 창 과정 중의 코드가 이러한 시스템 키를 설정한다면, 설정된 코드를 처리한 후에도, 이 키를 DefWindowProc 함수에 보내서 Windows의 처리에 영향을 주지 않도록 할 것입니다.프로그램이 DefWindowProc 함수에 메시지를 전달할 때만 윈도우즈가 이 메시지를 처리할 수 있습니다.창을 여는 동안 다음 행을 추가하는 경우
case WM_SYSKEYDOWN:
case WM_SYSKEYUP:
case WM_SYSCHAR:
return 0;
주 창에 초점을 입력할 때 알트 키의 동작을 효과적으로 막을 수 있습니다.
가상 키 코드는 WM 에 저장됩니다.KEYDOWN、WM_KEYUP、WM_SYSKEYDOWN 및 WMSYSKEYUP 메시지의 wParam 매개 변수에 있습니다.가상 키 코드는 어떤 키가 눌리거나 풀리는지 확인합니다.
VK_LBUTTON 1
VK_RBUTTON 2
VK_CANCEL 3 Cancel
VK_MBUTTON 4
VK_XBUTTON1 5
VK_XBUTTON2 6
VK_BACK 8 Backspace
VK_TAB 9 Tab
VK_CLEAR 12 Clear
VK_RETURN 13 Enter
VK_SHIFT 16 Shift
VK_CONTROL 17 Ctrl
VK_MENU 18 Alt
VK_PAUSE 19 Pause
VK_CAPITAL 20 Caps Lock
VK_KANA 21
VK_HANGUL 21
VK_JUNJA 23
VK_FINAL 24
VK_HANJA 25
VK_KANJI 25*
VK_ESCAPE 27 Esc
VK_CONVERT 28
VK_NONCONVERT 29
VK_ACCEPT 30
VK_MODECHANGE 31
VK_SPACE 32 Space
VK_PRIOR 33 Page Up
VK_NEXT 34 Page Down
VK_END 35 End
VK_HOME 36 Home
VK_LEFT 37 Left Arrow
VK_UP 38 Up Arrow
VK_RIGHT 39 Right Arrow
VK_DOWN 40 Down Arrow
VK_SELECT 41 Select
VK_PRINT 42 Print
VK_EXECUTE 43 Execute
VK_SNAPSHOT 44 Snapshot
VK_INSERT 45 Insert
VK_DELETE 46 Delete
VK_HELP 47 Help
48 0
49 1
50 2
51 3
52 4
53 5
54 6
55 7
56 8
57 9
65 A
66 B
67 C
68 D
69 E
70 F
71 G
72 H
73 I
74 J
75 K
76 L
77 M
78 N
79 O
80 P
81 Q
82 R
83 S
84 T
85 U
86 V
87 W
88 X
89 Y
90 Z
VK_LWIN 91
VK_RWIN 92
VK_APPS 93
VK_SLEEP 95
VK_NUMPAD0 96 0
VK_NUMPAD1 97 1
VK_NUMPAD2 98 2
VK_NUMPAD3 99 3
VK_NUMPAD4 100 4
VK_NUMPAD5 101 5
VK_NUMPAD6 102 6
VK_NUMPAD7 103 7
VK_NUMPAD8 104 8
VK_NUMPAD9 105 9
VK_MULTIPLY 106 *
VK_ADD 107 +
VK_SEPARATOR 108 Enter
VK_SUBTRACT 109 -
VK_DECIMAL 110 .
VK_DIVIDE 111 /
VK_F1 112 F1
VK_F2 113 F2
VK_F3 114 F3
VK_F4 115 F4
VK_F5 116 F5
VK_F6 117 F6
VK_F7 118 F7
VK_F8 119 F8
VK_F9 120 F9
VK_F10 121 F10
VK_F11 122 F11
VK_F12 123 F12
VK_F13 124
VK_F14 125
VK_F15 126
VK_F16 127
VK_F17 128
VK_F18 129
VK_F19 130
VK_F20 131
VK_F21 132
VK_F22 133
VK_F23 134
VK_F24 135
VK_NUMLOCK 144 Num Lock
VK_SCROLL 145 Scroll
VK_LSHIFT 160
VK_RSHIFT 161
VK_LCONTROL 162
VK_RCONTROL 163
VK_LMENU 164
VK_RMENU 165
VK_BROWSER_BACK 166
VK_BROWSER_FORWARD 167
VK_BROWSER_REFRESH 168
VK_BROWSER_STOP 169
VK_BROWSER_SEARCH 170
VK_BROWSER_FAVORITES 171
VK_BROWSER_HOME 172
VK_VOLUME_MUTE 173 VolumeMute
VK_VOLUME_DOWN 174 VolumeDown
VK_VOLUME_UP 175 VolumeUp
VK_MEDIA_NEXT_TRACK 176
VK_MEDIA_PREV_TRACK 177
VK_MEDIA_STOP 178
VK_MEDIA_PLAY_PAUSE 179
VK_LAUNCH_MAIL 180
VK_LAUNCH_MEDIA_SELECT 181
VK_LAUNCH_APP1 182
VK_LAUNCH_APP2 183
VK_OEM_1 186 ; :
VK_OEM_PLUS 187 = +
VK_OEM_COMMA 188
VK_OEM_MINUS 189 - _
VK_OEM_PERIOD 190
VK_OEM_2 191 / ?
VK_OEM_3 192 ` ~
VK_OEM_4 219 [ {
VK_OEM_5 220 \ |
VK_OEM_6 221 ] }
VK_OEM_7 222 ' "
VK_OEM_8 223
VK_OEM_102 226
VK_PACKET 231
VK_PROCESSKEY 229
VK_ATTN 246
VK_CRSEL 247
VK_EXSEL 248
VK_EREOF 249
VK_PLAY 250
VK_ZOOM 251
VK_NONAME 252
VK_PA1 253
VK_OEM_CLEAR 254
switch (message)
{
case WM_KEYDOWN:
switch (wParam)
{case : ;
break ;
}
return 0;