5-4 ¾×¼¿·¯·¹ÀÌÅÍ

¾×¼¿·¯·¹ÀÌÅÍ(Accelerator)´Â ¾ÆÁÖ ½±°Ô ¸»Çؼ­ ´ÜÃàŰÀÌ´Ù. ¾Æ·¡ ÇѱÛÀ» ¿¹·Î µç´Ù¸é Alt+LÀ» ´©¸£¸é ¹®ÀÚ ²Ù¹Ì±â ±â´É, Ctrl+P¸¦ ´©¸£¸é ÇÁ¸°ÅÍ ¼³Á¤ ±â´ÉÀÌ °ð¹Ù·Î ½ÇÇàµÇµµ·Ï Çϴ Űº¸µå Á¶ÇÕ۸¦ ¸»ÇÑ´Ù. ±×·±µ¥ ¿Ö ´ÜÃà۶ó´Â ¸»À» ¾²Áö ¾Ê°í ¾î·Æ°Ô½Ã¸® ¿µ¾î¸¦ ¾²´Â°¡ Çϸé À©µµ¿ìÁî¿¡¼­ ´ÜÃàŰ(ShortCut)¶ó´Â ¸»Àº ´Ù¸¥ Àǹ̷Π»ç¿ëµÇ°í Àֱ⠶§¹®ÀÌ´Ù. ¸Þ´º À̸§¿¡ &¸¦ ³Ö¾î AltŰ¿Í ÇÔ²² »ç¿ëÇϴ Ű¸¦ ´ÜÃà۶ó°í ÇÏ¸ç ¿©±â¼­ ¸»ÇÏ´Â ¾×¼¿·¯·¹ÀÌÅͿʹ Àǹ̰¡ Á¶±Ý ´Ù¸£´Ù. ´ÜÃàŰ´Â ¹Ýµå½Ã AltŰ¿Í ÇÔ²² »ç¿ëÇØ¾ß ÇÏ¸ç ¸Þ´º¿¡ ÀÖ´Â Ç׸ñÀ» Űº¸µå·Î ¼±ÅÃÇÏ´Â ºü¸¥ ¹æ¹ýÀÌÁö¸¸ ¾×¼¿·¯·¹ÀÌÅÍ´Â ¸Þ´º¿Í »ó°ü¾øÀÌ ¾ðÁ¦µçÁö »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â Á¡¿¡ À־ Â÷À̰¡ ÀÖ´Ù.

¿©±â¼­´Â Menu.dsw¿¡¼­ ¸¸µé¾ú´ø ¿¹Á¦¸¦ º¯ÇüÇÏ¿© ¸Þ´º Ç׸ñÀ» ¾×¼¿·¯·¹ÀÌÅÍ·Î °ð¹Ù·Î ½ÇÇàÇÒ ¼ö ÀÖµµ·Ï º¯ÇüÇØ º¼ °ÍÀÌ´Ù. °¢ ¸Þ´º Ç׸ñ¿¡ ´ëÇØ Ctrl+A, Ctrl+B, Ctrl+CÀÇ ¾×¼¿·¯·¹ÀÌÅ͸¦ ÇÒ´çÇÏ¿© ¸Þ´º¸¦ ¼±ÅÃÇÏÁö ¾Ê°í Űº¸µå·Î ¸Þ´º ±â´ÉÀ» ½ÇÇàÇϵµ·Ï ÇØ º»´Ù. ´Ü°è°¡ Á¶±Ý º¹ÀâÇϹǷΠ´ÙÀ½ ´Ü°è¸¦ µû¶ó Menu.dsw¸¦ °è¼Ó ¸¸µé¾î º¸ÀÚ.

1ÀÏ´Ü Menu.dsw ÇÁ·ÎÁ§Æ®¸¦ ´Ù½Ã ¿¬´Ù. ´ÜÃà۸¦ Áö¿øÇϱâ À§ÇØ ¸Þ´º ¸®¼Ò½º¸¦ ¼öÁ¤ÇÑ´Ù. ¸®¼Ò½º ºä¿¡¼­ IDR_MENU1À» ´õºí Ŭ¸¯ÇÏ¸é ¸Þ´º ÆíÁý±â°¡ ¿­¸± °ÍÀÌ´Ù.

File ¸Þ´º ¾Æ·¡ ¼¼ °³ÀÇ ¸Þ´º Ç׸ñÀÌ Àִµ¥ °¢ Ç׸ñÀÇ Ä¸¼ÇÀ» ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÑ´Ù. ¸Þ´º ÆíÁý±â¿¡¼­ ¸Þ´º Ç׸ñÀ» ´õºíŬ¸¯ÇÏ¿© ¼Ó¼º À©µµ¿ì¸¦ ¿¬ ´ÙÀ½ Caption ¼Ó¼ºÀ» ÆíÁýÇÏ¸é µÈ´Ù.

¼öÁ¤Àü ¼öÁ¤ÈÄ
Menu1 Menu&1\tCtrl+A
Menu2 Menu&2\tCtrl+B
Exit &Exit\tCtrl+C

ĸ¼Ç¿¡ Æ÷ÇÔµÈ &¹®ÀÚ°¡ ´ÜÃà۸¦ ÁöÁ¤Çϴµ¥ &´ÙÀ½¿¡ ÀÖ´Â ¹®ÀÚ°¡ ´ÜÃà۰¡ µÇ¸ç ´ÜÃàŰ·Î ÁöÁ¤µÈ ¹®ÀÚ ¹Ø¿¡´Â ¹ØÁÙÀÌ ±×¾îÁø´Ù. ´ÜÃàŰ´Â ±× ¸Þ´º Ç׸ñÀ» ´ëÇ¥ÇÏ´Â ¹®ÀÚ Çϳª·Î ÁöÁ¤ÇÏ´Â °ÍÀÌ º¸ÅëÀε¥ Menu1Àº 1À» Menu2´Â 2¸¦ Exit´Â E¸¦ ´ÜÃàŰ·Î ÁöÁ¤ÇÏ¿´´Ù. ¾Õ ¹®ÀÚ¸¦ ´ÜÃàŰ·Î ÁöÁ¤ÇÏ´Â °ÍÀÌ º¸ÆíÀûÀÌÁö¸¸ Copy, Cut µî°ú °°ÀÌ ¾Õ¹®ÀÚ°¡ Áߺ¹µÉ °æ¿ì´Â Àû´çÇÑ ´Ù¸¥ ¹®ÀÚ¸¦ ÁöÁ¤ÇØ¾ß ÇÑ´Ù.

¾×¼¿·¯·¹ÀÌÅʹ ĸ¼Ç µÚ¿¡ \t·Î Àû´çÈ÷ Ä­À» ¶ç¿î ÈÄ Å°Á¶ÇÕÀ» ½á ÁÖ¸é µÈ´Ù. ¿©±â¼­ »ç¿ëµÈ \t´Â ÅÇ ¹®ÀÚÀε¥ ¾×¼¿·¯·¹ÀÌÅͰ¡ ¸Þ´º ¸®½ºÆ®ÀÇ ¿À¸¥ÂÊÀ¸·Î °¡Áö·±ÇÏ°Ô Á¤·ÄµÇµµ·Ï ÇØ ÁØ´Ù. À§¿¡¼­ºÎÅÍ ¼ø¼­´ë·Î Ctrl+A, Ctrl+B, Ctrl+C¸¦ ¾×¼¿·¯·¹ÀÌÅÍ·Î ÁöÁ¤ÇÏ¿´´Ù. ĸ¼ÇÀ» º¯°æÇÑ ÈÄÀÇ ¸Þ´º ¸ð¾çÀº ´ÙÀ½°ú °°´Ù.

2¿©±â±îÁö¸¸ ÀÛ¾÷ÇÏ°í ¿¹Á¦¸¦ ´Ù½Ã ½ÇÇàÇØ º¸ÀÚ. ´ÜÃà۰¡ ÁöÁ¤µÇ¾úÀ¸¹Ç·Î ÀÌÁ¦ ¸¶¿ì½º¸¦ »ç¿ëÇÏÁö ¾Ê°íµµ ¸Þ´º Ç׸ñÀ» ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. File ¸Þ´º´Â F¹®ÀÚ°¡ ´ÜÃàŰ·Î ÁöÁ¤µÇ¾î ÀÖÀ¸¹Ç·Î ¾ðÁ¦µçÁö Alt+F¸¦ ´©¸£¸é File ¸Þ´º°¡ ¿­¸°´Ù. ¸Þ´º ¸®½ºÆ®¿¡¼­ ¹ØÁÙ ±×¾îÁø ¹®ÀÚ¸¦ ´©¸£¸é ÇØ´ç ¸Þ´º°¡ ¼±ÅõǴµ¥ ¿¹¸¦ µé¾î 1À» ´©¸£¸é Menu1ÀÌ ¼±ÅõǸç E¸¦ ´©¸£¸é Exit°¡ ¼±ÅõǾî ÇÁ·Î±×·¥ÀÌ Á¾·áµÈ´Ù.

±×·¯³ª ¾×¼¿·¯·¹ÀÌÅʹ ǥ½Ã¸¸ µÇ¾î ÀÖÁö ¾ÆÁ÷ µ¿ÀÛÇÏÁö´Â ¾Ê´Â´Ù. Ctrl+A, Ctrl+B¸¦ ´­·¯µµ ÇÁ·Î±×·¥Àº ¾Æ¹« ¹ÝÀÀÀÌ ¾øÀ» °ÍÀÌ´Ù. ¸Þ´º ¸®½ºÆ®¿¡ Ãâ·ÂµÇ´Â ¾×¼¿·¯·¹ÀÌÅÍ´Â ÀÌ ¸Þ´º Ç׸ñÀÇ ¾×¼¿·¯·¹ÀÌÅÍ¿¡ ´ëÇÑ ¼³¸íÀ» ÇØ ÁÖ´Â ¹®ÀÚ¿­ÀÏ»ÓÀÌ¸ç ½ÇÁ¦·Î ´ÜÃàŰ·Î µ¿ÀÛÇÏÁö´Â ¾Ê´Â´Ù. ¾×¼¿·¯·¹ÀÌÅ͸¦ ¸¸µé·Á¸é º°µµÀÇ ¸®¼Ò½º¸¦ ¸¸µé¾î ÁÖ¾î¾ß ÇÑ´Ù.

3ÀÌÁ¦ ¾×¼¿·¯·¹ÀÌÅ͸¦ ÀÛ¼ºÇØ º¸ÀÚ. ¸Þ´º¸¦ ¸¸µé ¶§¿Í °°Àº ¹æ¹ýÀ¸·Î Insert/Resource¸¦ ¼±ÅÃÇÏ°í ¸®¼Ò½º ¸®½ºÆ®¿¡¼­ Accelerator¸¦ ¼±ÅÃÇÑ´Ù. ´ÙÀ½°ú °°Àº ¾×¼¿·¯·¹ÀÌÅÍ ÆíÁý±â°¡ ¿­¸± °ÍÀÌ´Ù.

»õ·Î ¸¸µç ¾×¼¿·¯·¹ÀÌÅÍ Å×À̺íÀ̹ǷΠ¾ÆÁ÷ Á¤ÀǵǾî ÀÖ´Â ¾×¼¿·¯·¹ÀÌÅͰ¡ ¾øÀ¸¸ç ºóÄ­¸¸ Çϳª ÀÖ´Ù. ÀÌ ºóÄ­À» ´õºíŬ¸¯ÇÏ¸é ¾×¼¿·¯·¹ÀÌÅ͸¦ ÆíÁýÇÒ ¼ö ÀÖ´Â ¼Ó¼º ÆíÁý±â°¡ ¿­¸°´Ù. °¢ ¶õÀ» ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÑ´Ù.

ID

¾×¼¿·¯·¹ÀÌÅÍÀÇ IDÀ̸ç ÇÁ·Î±×·¥ ¼Ò½º¿¡¼­ ¾×¼¿·¯·¹ÀÌÅ͸¦ ÂüÁ¶ÇÒ ¶§ ÀÌ °ªÀ» »ç¿ëÇÑ´Ù. ¸Þ´ºÀÇ ID¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ý°ú µ¿ÀÏÇÑ ±ÔÄ¢´ë·Î ID¸¦ ÀÛ¼ºÇ쵂 ÀÌ ¿¹Á¦ÀÇ °æ¿ì´Â ¸Þ´º¿¡ ÀÛ¼ºµÇ¾î ÀÖ´Â ID¸¦ ±×´ë·Î »ç¿ëÇÏ¸é µÈ´Ù. µå·Ó´Ù¿î ¸®½ºÆ®¸¦ ¿­¾î ID¿¡ ID_FILE_MENU1À» ¼±ÅÃÇÑ´Ù.

Key

¾×¼¿·¯·¹ÀÌÅÍ·Î »ç¿ëÇÒ Å°¸¦ ¼±ÅÃÇÑ´Ù. Æã¼ÇŰ³ª Ư¼ö۸¦ »ç¿ëÇÏ·Á¸é µå·Ó´Ù¿î ¸®½ºÆ®¸¦ ¿­¾î ¼±ÅÃÇÏ°í ¾ËÆÄºªÅ°³ª ¼ýÀÚ۸¦ ¼±ÅÃÇÏ·Á¸é ¹Ù·Î ¾Æ·¡ÂÊÀÇ Next Key Typed¹öưÀ» ´©¸¥ ÈÄ ¿øÇϴ Ű¸¦ Űº¸µå¿¡¼­ ´©¸£¸é µÈ´Ù. Next Key Typed¸¦ ´©¸¥ ÈÄ Å°º¸µå¿¡¼­ "A"۸¦ ´©¸¥´Ù.

Modifier

Key¿Í ÇÔ²² ´­·¯Áú Á¶ÇÕ۸¦ ¼±ÅÃÇÑ´Ù. Ctrl, Alt, Shift¸¦ °³º°ÀûÀ¸·Î ¶Ç´Â ¿©·¯°³¸¦ ÇѲ¨¹ø¿¡ ¼±ÅÃÇÒ ¼ö ÀÖ´Ù. Ctrl۸¸ ¼±ÅÃÇÑ´Ù.

Type

Key°ªÀÌ ¾Æ½ºÅ° Äڵ尪ÀÎÁö °¡»óŰ Äڵ尪ÀÎÁö¸¦ ¼³Á¤ÇÑ´Ù. º¸Åë °¡»óŰ Äڵ带 ¸¹ÀÌ »ç¿ëÇÑ´Ù.

ÀÌ·±½ÄÀ¸·Î ´ÙÀ½°ú °°ÀÌ ¼¼ °³ÀÇ ¾×¼¿·¯·¹ÀÌÅ͸¦ ¸¸µç´Ù. ¾×¼¿·¯·¹ÀÌÅͰ¡ ¸Þ´ºÀÇ ±â´ÉÀ» ´ë½ÅÇÒ ¼ö ÀÖµµ·Ï ¸Þ´º¿Í °°Àº ID¸¦ »ç¿ëÇϵµ·Ï ÇØ µÎ¾ú´Ù.

4´ÙÀ½Àº ¸¸µé¾îÁø ¸®¼Ò½º¸¦ Äڵ忡¼­ »ç¿ëÇϵµ·Ï ¼Ò½º¸¦ º¯°æÇØ ÁÖ¾î¾ß ÇÑ´Ù. ¾×¼¿·¯·¹ÀÌÅÍÀÇ ID¸¦ ¸Þ´ºÀÇ ID¿Í °°µµ·Ï ÇØ µÎ¾ú±â ¶§¹®¿¡ WndProcÀÇ WM_COMMAND´Â ¼öÁ¤ÇÒ Çʿ䰡 ¾ø´Ù. WinMainÀÇ ¼±µÎ¿¡ hAccel º¯¼ö¸¦ ¼±¾ðÇØ ÁÖ°í ¸Þ½ÃÁö ·çÇÁ¸¸ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇØ ÁÖ¸é µÈ´Ù.

HACCEL hAccel;

hAccel=LoadAccelerators(hInstance,MAKEINTRESOURCE(IDR_ACCELERATOR1));
while(GetMessage(&Message,0,0,0)) {
	if (!TranslateAccelerator(hWnd,hAccel,&Message)) {
		TranslateMessage(&Message);
		DispatchMessage(&Message);
	}
}

¸ø º¸´ø ÇÔ¼ö µÎ °³°¡ »õ·Î µîÀåÇß´Ù. ¿ì¼± LoadAccelerators ÇÔ¼öºÎÅÍ ¾Ë¾Æ º¸ÀÚ.

HACCEL LoadAccelerators(HINSTANCE hInstance, LPCTSTR lpTableName );

ÀÌ ÇÔ¼ö´Â ¸®¼Ò½º·ÎºÎÅÍ ¾×¼¿·¯·¹ÀÌÅÍ Å×À̺íÀ» ÀоîµéÀδÙ. µÎ¹øÂ° Àμö lpTableNameÀº ¾×¼¿·¯·¹ÀÌÅÍ Å×À̺íÀÇ À̸§ ¹®ÀÚ¿­ Æ÷ÀÎÅÍÀÌµÇ ¿ì¸®°¡ ÀÛ¼ºÇÑ ¾×¼¿·¯·¹ÀÌÅÍ Å×À̺í IDR_ACCELERATOR1Àº Á¤¼ö°ªÀ̹ǷΠMAKEINTRESOURCE ¸ÅÅ©·Î¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. ÀÌ ÇÔ¼ö´Â ¸®¼Ò½º¿¡¼­ ¾×¼¿·¯·¹ÀÌÅÍ Å×À̺íÀ» ÀÐÀº ÈÄ ±× Çڵ鰪À» ¸®ÅÏÇØ ÁØ´Ù. ÀÌ Çڵ鰪À» hAccelÀ̶ó´Â º¯¼ö¿¡ ´ëÀÔÇØ µÎ¸é ´ÙÀ½ºÎÅÍ hAccelÀ» ÅëÇØ ¾×¼¿·¯·¹ÀÌÅÍ Å×À̺íÀ» ÀÐÀ» ¼ö ÀÖ´Ù. ¸Þ½ÃÁö ·çÇÁ¾È¿¡´Â ´ÙÀ½ ÇÔ¼ö°¡ »ðÀԵǾú´Ù.

int TranslateAccelerator(HWND hWnd, HACCEL hAccTable, LPMSG lpMsg );

ÀÌ ÇÔ¼ö´Â Űº¸µå ¸Þ½ÃÁö¸¦ WM_COMMAND ¸Þ½ÃÁö·Î º¯°æÇØ ÁÖ¾î ¾×¼¿·¯·¹ÀÌÅͰ¡ µ¿ÀÛÇÒ ¼ö ÀÖµµ·Ï ÇØ ÁØ´Ù. ¾×¼¿·¯·¹ÀÌÅÍ Ctrl+A°¡ ÀԷµǾú´Ù°í ÇØ º¸ÀÚ. Ctrl+A´Â ¾×¼¿·¯·¹ÀÌÅÍÀ̱â ÀÌÀü¿¡ Űº¸µå·ÎºÎÅÍÀÇ ÀÔ·ÂÀ̹ǷΠ¸ÕÀú WM_KEYDOWN ¸Þ½ÃÁö°¡ ¹ß»ýÇÒ °ÍÀÌ°í ±×´ë·Î ³»¹ö·Á µÎ¸é WndProcÀÇ WM_KEYDOWN ¸Þ½ÃÁö ó¸® ·çƾ¿¡¼­ ¸ÕÀú ÀÌ Å°°ªÀ» ó¸®ÇØ ¹ö¸± °ÍÀÌ´Ù. ±×·¡¼­ TranslateAccelerator ÇÔ¼ö´Â Űº¸µå ÀԷ°ªÀ» Àоî ÀÌ Å°°ªÀÌ ÁöÁ¤ÇÑ ¾×¼¿·¯·¹ÀÌÅÍ Å×ÀÌºí¿¡ ÀÖ´ÂÁö¸¦ ¸ÕÀú »ìÆìº¸°í ÀÖÀ» °æ¿ì WM_COMMAND ¸Þ½ÃÁö¸¦ ¹ß»ý½Ã۰í TRUE¸¦ ¸®ÅÏÇØ ¹ö¸°´Ù. ±×·¡¼­ ¾×¼¿·¯·¹ÀÌÅͰ¡ ÀԷµǾúÀ» °æ¿ì TranslateMessage, DispatchMessage ÇÔ¼ö°¡ ½ÇÇàµÇÁö ¸øÇϵµ·Ï ¸·¾Æ ¹ö¸®¸ç ´ÙÀ½¹øÀÇ WM_COMMAND¸Þ½ÃÁö°¡ 󸮵ǵµ·Ï ÇØ ÁØ´Ù. ¹°·Ð ¾×¼¿·¯·¹ÀÌÅÍ ÀÔ·ÂÀÌ ¾Æ´Ï¸é FALSE¸¦ ¸®ÅÏÇÏ¿© ´Ù¸¥ ¸Þ½ÃÁöµéÀº Á¤»óÀûÀ¸·Î 󸮵ǵµ·Ï ÇØ ÁØ´Ù.

ÀÌÁ¦ ¿¹Á¦¸¦ ¿Ï¼ºÇß´Ù. ÄÄÆÄÀϽÃÄÑ º¸°í ¿¹Á¦¸¦ ½ÇÇàÇØº¸ÀÚ. ÇÁ·Î±×·¥ ½ÇÇàÁßÀÇ ¸ð½ÀÀº ´ÙÀ½°ú °°´Ù.

´ÜÃàŰ¿Í ¾×¼¿·¯·¹ÀÌÅͰ¡ Á¤ÀǵǾúÀ¸¹Ç·Î ´ÙÀ½ ¼¼°¡Áö ¹æ¹ýÁß ¾î¶² ¹æ¹ýÀ» ¾²´õ¶óµµ Menu1¸Þ´º Ç׸ñÀ» È£ÃâÇÒ ¼ö ÀÖ°Ô µÇ¾ú´Ù.

¨ç ¸¶¿ì½º·Î File ¸Þ´º¸¦ ¿­°í Menu1 ¸Þ´º Ç׸ñÀ» ¼±ÅÃÇÑ´Ù.

¨è Alt+F¸¦ ´­·¯ File ¸Þ´º¸¦ ¿­°í 1À» ´­·¯ Menu1À» ¼±ÅÃÇÑ´Ù.

¨é °ð¹Ù·Î Ctrl+A¸¦ ´©¸¥´Ù.


¸ñ·Ï º¸±â  ´ÙÀ½ °­Á            written by http://www.winapi.co.kr