1.키 ¶
- 1-1) WM_CHAR
키 했 포 키 (WM_CHAR) 키 한. 포(Focus) 활화 하 한 하 활화. 행 티 태 환 하 활화 하 활화 포 키 . 하 템 키 하 키 할 하 .
~cpp #include <windows.h> LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); HINSTANCE g_hInst; LPSTR lpszClass="Key"; int APIENTRY WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance ,LPSTR lpszCmdParam,int nCmdShow) { HWND hWnd; MSG Message; WNDCLASS WndClass; g_hInst=hInstance; WndClass.cbClsExtra=0; WndClass.cbWndExtra=0; WndClass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); WndClass.hCursor=LoadCursor(NULL,IDC_ARROW); WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION); WndClass.hInstance=hInstance; WndClass.lpfnWndProc=(WNDPROC)WndProc; WndClass.lpszClassName=lpszClass; WndClass.lpszMenuName=NULL; WndClass.style=CS_HREDRAW | CS_VREDRAW; RegisterClass(&WndClass); hWnd=CreateWindow(lpszClass,lpszClass,WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT, NULL,(HMENU)NULL,hInstance,NULL); ShowWindow(hWnd,nCmdShow); while(GetMessage(&Message,0,0,0)) { TranslateMessage(&Message); DispatchMessage(&Message); } return Message.wParam; } LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; static char str[256]; int len; switch(iMessage) { case WM_CHAR: len = strlen(str); str[len]=(TCHAR)wParam; str[len+1]=0; InvalidateRect(hWnd,NULL,FALSE); return 0; case WM_PAINT: hdc=BeginPaint(hWnd,&ps); TextOut(hdc,100,100,str,strlen(str)); EndPaint(hWnd,&ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); }
한 행해 . 키 키 한 화 .WndProc str 한 . WndProc 하 할 화 static 한. WinMain 함 하 .
하 하 키 하 해 할 . 키 키 WM_CHAR 했 하 하 WM_PAINT 한. WM_CHAR 하 하 하 화 항 해 하 WM_PAINT 하 . .
WM_CHAR 키 wParam 하 wParam 키 .
wParam 키 str 한.
하 하 키 하 해 할 . 키 키 WM_CHAR 했 하 하 WM_PAINT 한. WM_CHAR 하 하 하 화 항 해 하 WM_PAINT 하 . .
WM_CHAR 키 wParam 하 wParam 키 .
wParam 키 str 한.
~cpp len = strlen(str); str[len]=(TCHAR)wParam; str[len+1]=0;
wParam 0 표한. 키 함 str 키 .
키 str 하 화 하 WM_PAINT . 키 해 화 화 WM_PAINT 하 . WM_PAINT 하 InvalidateRect 함 호해 . WM_CHAR 한 InvalidateRect 함 호해 키 화 하.
키 str 하 화 하 WM_PAINT . 키 해 화 화 WM_PAINT 하 . WM_PAINT 하 InvalidateRect 함 호해 . WM_CHAR 한 InvalidateRect 함 호해 키 화 하.
- 1-2) WM_KEYDOWN
키 할 WM_CHAR 하 . 키 WM_CHAR . 키 Ins, Del, PgUp, 펑키 키 키 WM_CHAR 해 . WM_KEYDOWN 해 한.
키 / / 키
VK_LBUTTON / 01
VK_RBUTTON / 02
VK_CANCEL / 03 / Ctrl-Break
VK_MBUTTON / 04
VK_BACK / 08 / Backspace
VK_TAB / 09 / Tab
VK_RETURN / 0D / Enter
VK_SHIFT / 10 / Shift
VK_CONTROL / 11 / Ctrl
VK_MENU / 12 / Alt
VK_ESCAPE / 1B / Esc
VK_SPACE / 20 / Space
VK_END / 23 / End
VK_HOME / 24 / Home
VK_LEFT / 25 / 키
VK_UP / 26 / 키
VK_RIGHT / 27 / 키
VK_DOWN / 28 / 키
VK_NUMLOCK / 90 / Num Lock
VK_SCROLL / 91 / Scroll Lock
VK_LBUTTON / 01
VK_RBUTTON / 02
VK_CANCEL / 03 / Ctrl-Break
VK_MBUTTON / 04
VK_BACK / 08 / Backspace
VK_TAB / 09 / Tab
VK_RETURN / 0D / Enter
VK_SHIFT / 10 / Shift
VK_CONTROL / 11 / Ctrl
VK_MENU / 12 / Alt
VK_ESCAPE / 1B / Esc
VK_SPACE / 20 / Space
VK_END / 23 / End
VK_HOME / 24 / Home
VK_LEFT / 25 / 키
VK_UP / 26 / 키
VK_RIGHT / 27 / 키
VK_DOWN / 28 / 키
/ 30 ~ 39 / 키 0~9
/ 41 ~ 5A / A~Z
VK_F1 ~ VK_F16 / 70 ~ 7F / 펑키 F1 ~ F16/ 41 ~ 5A / A~Z
VK_NUMLOCK / 90 / Num Lock
VK_SCROLL / 91 / Scroll Lock
- 1-3) TranslateMessage
~cpp while(GetMessage(&Message,0,0,0)) { TranslateMessage(&Message); DispatchMessage(&Message); }
2. ¶
GUI 키 . 키 픽 툴 DTP, CAD 한 . 키 하 한. 한 .
/ / / 클
/ WM_LBUTTONDOWN/ WM_LBUTTONUP / WM_LBUTTONDBLCLK
/ WM_RBUTTONDOWN/ WM_RBUTTONUP / WM_RBUTTONDBLCLK
/ WM_LBUTTONDOWN/ WM_LBUTTONUP / WM_LBUTTONDBLCLK
/ WM_RBUTTONDOWN/ WM_RBUTTONUP / WM_RBUTTONDBLCLK
lParam y표, 하 x표 표 해 해 HIWORD, LOWORD 크 함 한. 한 표 (LOWORD(lParam), HIWORD(lParam)) .
wParam 태 키 합 키(Shift, Ctrl) 태 . 합키 태 트 해 .
/
MK_CONTROL / Ctrl 키 .
MK_LBUTTON / .
MK_RBUTTON / .
MK_MBUTTON / .
MK_SHIFT / Shift 키 .
MK_CONTROL / Ctrl 키 .
MK_LBUTTON / .
MK_RBUTTON / .
MK_MBUTTON / .
MK_SHIFT / Shift 키 .
키 할 WM_MOUSEMOVE . lParam wParam 합키 태 .