Àμö |
wParam : ÀÔ·ÂµÈ ¹®ÀÚ ÄÚµåÀÌ´Ù. ÀϹÝÀûÀ¸·Î ÀÌ ÄÚµå´Â ¾Æ½ºÅ° ÄÚµåÀÌ¸ç °ð¹Ù·Î ¹®ÀÚ¿ Ãâ·Â¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Ù. lParam : ´·¯Áø Ű¿Í Űº¸µå »óÅ¿¡ ´ëÇÑ ¿©·¯ °¡Áö Á¤º¸¸¦ °¡Áö´Â ºñÆ® Çʵ尪ÀÌ¸ç °¢ ºñÆ®º°·Î ´ÙÀ½°ú °°Àº Á¤º¸°¡ Àü´ÞµÈ´Ù. ±×·¯³ª WM_CHAR ¸Þ½ÃÁö¿¡¼´Â ÀÌ Á¤º¸¸¦ »ç¿ëÇÏÁö ¾Ê´Â´Ù. ¿Ö³ÄÇϸé Ű Çϳª¿Í ¹®ÀÚ ÇϳªÀÇ ´ëÀÀ ¹æ½ÄÀÌ ÀÏÁ¤ÇÏÁö ¾Ê±â ¶§¹®¿¡ ÀÌ Á¤º¸´Â Ç×»ó À¯È¿ÇÏÁö ¾Ê±â ¶§¹®ÀÌ´Ù. |
¼³¸í |
Űº¸µå·ÎºÎÅÍ ¹®ÀÚ۰¡ ÀԷµǾúÀ» ¶§ ÀÌ ¸Þ½ÃÁö°¡ º¸³»Áø´Ù. ¿©±â¼ ¹®ÀÚŰ´Â ȸéÀ¸·Î Ãâ·Â °¡´ÉÇÑ ¹®ÀÚÀÎ ¾ËÆÄºª, ¼ýÀÚ, ±âÈ£ µîÀ» ÀǹÌÇϸç Ä¿¼ À̵¿Å°³ª, PgUp, PgDn µîÀÇ ±â´É۵éÀº Á¦¿ÜµÈ´Ù. ÀÌ ¸Þ½ÃÁö´Â TranslateMessage ÇÔ¼ö¿¡ ÀÇÇØ »ý¼ºµÇ¾î ¸Þ½ÃÁö Å¥¿¡ µ¡ºÙ¿©Áø´Ù. »ç¿ëÀÚ°¡ Űº¸µå¸¦ ´©¸¦ ¶§ TranslateMessage ÇÔ¼ö´Â ÀÌ Å°°¡ ÇöÀç Űº¸µå¿¡¼ ´ëÀÀµÇ´Â ¹®ÀÚ°¡ ÀÖ´ÂÁö¸¦ Á¡°ËÇϰí Caps Lock, Shift ŰÀÇ »óÅ µîÀ» Âü°íÇÏ¿© ÀûÀýÇÑ WM_CHAR ¸Þ½ÃÁö¸¦ º¸³»ÁØ´Ù. ÀÌ ¸Þ½ÃÁö¸¦ ¹ÞÀ¸·Á¸é ¸Þ½ÃÁö ·çÇÁ´Â ¹Ýµå½Ã ´ÙÀ½°ú °°ÀÌ TranslateMessage ÇÔ¼ö¸¦ Æ÷ÇÔÇϰí ÀÖ¾î¾ß ÇÑ´Ù. while(GetMessage(&Message,0,0,0)) { TranslateMessage(&Message); DispatchMessage(&Message); } Űº¸µåÀÇ ¹®ÀÚ۸¦ ´·¶´Ù ¶¿ ¶§ WM_KEYDOWN, WM_CHAR, WM_KEYUP ¸Þ½ÃÁö°¡ ¼ø¼´ë·Î Àü´ÞµÈ´Ù. DBCS ¹®ÀÚ ÄÚµå(À¯´ÏÄڵ尡 ¾Æ´Ñ ÇѱÛ)ÀÎ °æ¿ì ÀÌ ¸Þ½ÃÁö´Â »óÇÏÀ§ ¹ÙÀÌÆ®¿¡ ´ëÇØ µÎ¹ø Àü´ÞµÇ¸ç ÀÌ µÎ ¹ÙÀÌÆ®¸¦ ÇÕÄ¡¸é ÇÑ±Û ÇÑ ¹®ÀÚÀÇ Äڵ尡 ¾ò¾îÁø´Ù. |
¸®ÅÏ |
|
¿¹Á¦ |
´ÙÀ½ ¿¹Á¦´Â WM_CHAR ¸Þ½ÃÁö·Î Àü´ÞµÈ ¹®ÀÚ Äڵ带 ȸ鿡 º¸¿©ÁØ´Ù. ¾ËÆÄºª ¹®ÀÚ¸¦ ´©¸£¸é Caps Lock, ShiftŰÀÇ »óÅ¿¡ µû¶ó ÀûÀýÇÑ ¹®ÀÚ°¡ Àü´ÞµÈ´Ù. ±×·¯³ª 2¹ÙÀÌÆ® ¹®ÀÚÀÎ ÇѱÛÀº Á¦´ë·Î º¸¿©ÁÖÁö ¸øÇÑ´Ù. LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; static char Mes[128]; switch(iMessage) { case WM_CHAR: wsprintf(Mes,"%c¹®ÀÚ°¡ ´·¯Á³´Ù",wParam); InvalidateRect(hWnd,NULL,TRUE); return 0; case WM_PAINT: hdc=BeginPaint(hWnd, &ps); TextOut(hdc,10,10,Mes,lstrlen(Mes)); EndPaint(hWnd, &ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } ´ÙÀ½ ¿¹Á¦´Â WM_CHAR·Î Àü´ÞµÇ´Â ¹®ÀÚµéÀ» ¹®ÀÚ¿ ¹öÆÛ¿¡ ¸ð¾Æ Ãâ·ÂÇÑ´Ù. ÀÌ °æ¿ì Çѱ۵µ Á¦´ë·Î ÀԷ¹ÞÀ» ¼ö ÀÖ´Ù. 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,10,10,str,strlen(str)); EndPaint(hWnd,&ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } ¸¸¾à Á¶¸³ÁßÀÎ ÇѱÛÀ» º¸¿© ÁÖ°í ½Í´Ù¸é IME °ü·Ã ¸Þ½ÃÁö¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. |
Ç÷§Æû |
95ÀÌ»ó |
ÂüÁ¶ |
|
written by http://www.winapi.co.kr
|