티스토리 뷰

프로그래밍/API

키보드

에어버스 2016. 4. 24. 11:56

키보드 입력 시 발생하는 이벤트
WM_KEYDOWN, WM_KEYUP, WM_CHAR (문자 눌림)

wParam
영문자, 숫자키 같은 문자키가 눌리면 ASCII코드가 wParam 에 전달된다.
문자키 아닌 경우 가상키코드가 wParam 에 전달된다.

lParam (코드에서 거의 사용 안함)
0~15           비트 키가 연속적으로 눌릴떄 카운트
16~23비트    스캔코드(일반적으로 사용 안함)
24               확장키(숫자키패드의 Num Lock, Enter 키등)이 눌리면 1, 그렇지 않으면 0
25~28          사용안함
29               Alt 키가 눌리면 1, 아니면 0
30               메시지 보내기전(이전)에 키가 눌려져 있으면 1, 아니면 0
31               키가 눌려지면 1, 아니면 0

- 가상 키코드

VK_CANDEL     Ctrl+Break
VK_BACK
VK_TAB
VK_RETURN
VK_SHIFT
VK_CONTROL
VK_MENU        Alt 키
VK_CAPITAL     Caps Lock
VK_SPACE
VK_PRIOR        Page Up
VK_NEXT         Page Down
VK_END
VK_HOME
VK_LEFT
VK_UP
VK_RIGHT
VK_DOWN
VK_INSERT
VK_DELETE
VK_F1~VK_F24
VK_NUMLOCK
VK_SCROLL     Scroll Lock 키

case WM_KEYDOWN:
  switch(wParam) {
    case VK_HOME:
      break;
  }
  break;

- 문자키 입력때마다 화면 출력하기

static TCHAR strChar[MAX_PATH];
int nlen = 0;
switch(iMessage) {
  case WM_CHAR: // 문자키가 눌리면 TranselateMessage() 에 의해 WM_CHAR 이벤트 발생함
    nLen = strlen(strChar);
    strChar[nLen] = (char)wParam;
    strChar[nLen+1] = 0;
    InvalidateRect(hWnd, NULL, FALSE);
    break;
  case WM_PAINT:
    PAINTSTRUCT ps;
    HDC hdc = BeginPaint(hWnd, &ps);
    TextOut(hdc, 100, 100, strChar, strlen(strChar);
    EndPaint(hWnd, &ps);
    break;

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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 31