WM_CHAR

Àμö

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 ¹®ÀÚ ÄÚµå(À¯´ÏÄڵ尡 ¾Æ´Ñ ÇѱÛ)ÀÎ °æ¿ì ÀÌ ¸Þ½ÃÁö´Â »óÇÏÀ§ ¹ÙÀÌÆ®¿¡ ´ëÇØ µÎ¹ø Àü´ÞµÇ¸ç ÀÌ µÎ ¹ÙÀÌÆ®¸¦ ÇÕÄ¡¸é ÇÑ±Û ÇÑ ¹®ÀÚÀÇ Äڵ尡 ¾ò¾îÁø´Ù.

¸®ÅÏ

 

¿¹Á¦

¿¹Á¦ 1

´ÙÀ½ ¿¹Á¦´Â 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));
}

¿¹Á¦ 2

´ÙÀ½ ¿¹Á¦´Â 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