| Àμö |
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
|