TranslateAccelerator

¿øÇü int TranslateAccelerator(HWND hWnd, HACCEL hAccTable, LPMSG lpMsg);
Àμö

¢ºhWnd : ¸Þ½ÃÁö¸¦ º¯È¯ÇÒ À©µµ¿ìÀÇ ÇÚµé

¢ºhAccTable : ¾×¼¿·¯·¹ÀÌÅÍ Å×À̺íÀÇ ÇÚµéÀ̸ç ÀϹÝÀûÀ¸·Î LoadAccelerators ÇÔ¼ö·Î ÀÐÇôÁø °ÍÀÌ´Ù.

¢ºlpMsg : GetMessage ¶Ç´Â PeekMessage ÇÔ¼ö¿¡ ÀÇÇØ ÀÐÇôÁø ¸Þ½ÃÁö Á¤º¸ ±¸Á¶Ã¼

¸®ÅÏ ¼º°øÇϸé 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÏ¸ç ½ÇÆÐÇϸé 0À» ¸®ÅÏÇÑ´Ù. ÀÌ ÇÔ¼ö°¡ 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÒ °æ¿ì ÀÌ ¸Þ½ÃÁö´Â º¯È¯µÇ¾î ÀÌ¹Ì Ã³¸®µÇ¾úÀ¸¹Ç·Î TranslateMessage ÇÔ¼ö·Î º¸³»¼­´Â ¾ÈµÈ´Ù.
¼³¸í

¾×¼¿·¯·¹ÀÌÅÍ ¸í·ÉÀ» ¸¸µç´Ù. ÀÌ ÇÔ¼ö´Â hAccTableÀ» ÂüÁ¶ÇÏ¿© WM_KEYDOWN, WM_SYSKEYDOWNÀ¸·ÎºÎÅÍ WM_COMMAND, WM_SYSCOMMAND ¸Þ½ÃÁö¸¦ ¸¸µé¾î ³½´Ù. ´­·¯Áø Å°°¡ ¾×¼¿·¯·¹ÀÌÅÍ Å×ÀÌºí¿¡ Á¤ÀÇµÈ ¸í·ÉÀÏ °æ¿ì ¸í·É ¸Þ½ÃÁö·Î º¯È¯ÇÏ¿© ¸Þ½ÃÁö Å¥¿¡ ºÙ¿©ÁÖ¸ç ÀÌ ¸Þ½ÃÁö´Â ´ÙÀ½¹ø GetMessage³ª PeekMessage¿¡ ÀÇÇØ ÀÐÇôÁ® 󸮵Ǹç ÀÌ ¸Þ½ÃÁö°¡ ¿ÏÀüÈ÷ 󸮵DZâ Àü¿¡´Â ¸®ÅÏÇÏÁö ¾Ê´Â´Ù.

ÀϹÝÀûÀ¸·Î ¾×¼¿·¯·¹ÀÌÅÍ´Â ¸Þ´º Ç׸ñ¿¡ ´ëÇÑ ´ÜÃàÅ°¸¦ Á¦°øÇϱâ À§ÇØ ÀÛ¼ºÇÑ´Ù. ÀÌ °æ¿ì ¾×¼¿·¯·¹ÀÌÅÍÅ°°¡ ´­·¯Áö¸é ¸¶Ä¡ ¸Þ´º°¡ ¼±ÅÃµÈ °Íó·³ WM_INITMENU, WM_INITPOPUPMENU ¸Þ½ÃÁö°¡ Àü´ÞµÈ´Ù. ´Ü À©µµ¿ì°¡ »ç¿ë±ÝÁöµÇ¾î Àְųª ¸Þ´º Ç׸ñÀÌ »ç¿ë±ÝÁöµÈ °æ¿ì, ¸¶¿ì½º°¡ ĸóµÈ °æ¿ì´Â Á¦¿ÜµÈ´Ù. WM_COMMAND ¸Þ½ÃÁö´Â ¸í·ÉÀÌ ¾×¼¿·¯·¹ÀÌÅͷκÎÅÍ ¿Â °æ¿ì wParamÀÇ »óÀ§ ¿öµå·Î 1ÀÌ Àü´ÞµÇ¸ç ¸Þ´º·ÎºÎÅÍ ¿Â °æ¿ì 0ÀÌ Àü´ÞµÇ´Âµ¥ º¸Åë ÀÌ ±¸ºÐÀº ¹«½ÃÇÏÁö¸¸ ¸Þ´º·ÎºÎÅÍÀÇ ¸í·É°ú ¾×¼¿·¯·¹ÀÌÅͷκÎÅÍÀÇ ¸í·ÉÀ» ±¸ºÐÇÏ·Á¸é HIWORD(wParam)À» Âü°íÇϵµ·Ï ÇÑ´Ù. ´ÙÀ½Àº ¾×¼¿·¯·¹ÀÌÅÍ°¡ Á¤ÀǵǾî ÀÖÀ» °æ¿ìÀÇ ¸Þ½ÃÁö ·çÇÁÀÌ´Ù.

while(GetMessage(&Message,0,0,0)) {
	if (!TranslateAccelerator(hWnd,hAccel,&Message)) {
		TranslateMessage(&Message);
		DispatchMessage(&Message);
	}
}

GetMessage·Î ¸Þ½ÃÁö¸¦ Á¶»çÇÑ ÈÄ ¸ÕÀú TranslateAccelerator ÇÔ¼ö°¡ ÀÌ ¸Þ½ÃÁö¸¦ °Ë»çÇÏ¿© ¾×¼¿·¯·¹ÀÌÅÍÇ¥¿¡ ÀÖ´Â Å°º¸µå ÀÔ·ÂÀÎÁö Á¶»çÇÑ´Ù. ¸¸¾à ±×·¸´Ù¸é ÀÌ ¸Þ½ÃÁö´Â WM_COMMAND·Î º¯È¯µÇ¾î ¸Þ½ÃÁö ó¸® ÇÔ¼ö·Î º¸³»Áö¸ç ÀÌ °æ¿ì TranslateMessage, DispatchMessage ÇÔ¼ö´Â È£ÃâµÇÁö ¸»¾Æ¾ß ÇÑ´Ù.

Âü°íÇÔ¼ö LoadAccelerators : ¾×¼¿·¯·¹ÀÌÅÍ Å×À̺íÀ» ÀоîµéÀδÙ.
Ç÷¿Æû95ÀÌ»ó
º»¹®ÂüÁ¶ 

written by http://www.winapi.co.kr