(win32) 키보드 메시지

10452 단어 win32 학습 노트
메시지 대기열에서 MSG 구조의 hwnd 인자를 읽으면 메시지를 받는 창 핸들을 표시합니다.main의 메시지 순환에서 DispatchMessage 함수를 호출하여 메시지를 창 프로세스에 전송합니다.
이 키보드 메시지를 받는 창을 입력 초점이 있는 창이라고 합니다.포커스를 입력하는 창은 현재 활성 창이거나 현재 활성 창을 부모 창으로 하는 창일 것입니다.
키보드 메시지는 시스템 메시지 대기열에 저장된 다음 프로그램 메시지 대기열에 보냅니다.그러나 프로그램이 하나의 메시지를 처리한 후에만 시스템 메시지 대기열이 다음 메시지를 프로그램 메시지 대기열에 넣을 수 있습니다.
키 조합, 예를 들어 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;

좋은 웹페이지 즐겨찾기