°¡. Å°º¸µå¿Í ¹®ÀÚ

¹®ÀÚ¸¦ ÀÔ·ÂÇÏ´Â ±âº»ÀûÀÎ ÀåÄ¡´Â Å°º¸µåÀÌ´Ù. OCRÀ̳ª À½¼º, Ææ°°Àº ´ë¾ÈÀÌ ÀüÇô ¾ø´Â °ÍÀº ¾Æ´ÏÁö¸¸ ¾ÆÁ÷µµ ¹®ÀÚÀԷ¿ëÀ¸·Î Å°º¸µå¸¸ÇÑ ÀåÄ¡°¡ ¾øÀ¸¸ç, ÇÑ µ¿¾ÈÀº ¾Æ¸¶µµ Å°º¸µå°¡ °è¼Ó »ç¿ëµÉ °ÍÀÌ´Ù. GUI ¿î¿µÃ¼Á¦ÀÎ À©µµ¿ìÁîÀÇ ±âº» ÀÔ·ÂÀåÄ¡µµ ¾ÆÁ÷±îÁö´Â ¸¶¿ì½º°¡ ¾Æ´Ï¶ó Å°º¸µåÀÌ´Ù. ±×·¡¼­ ¿ì¸®´Â ¹®ÀÚÀÔ·ÂÀ» ÇÁ·Î±×·¡¹ÖÇϱâ À§ÇØ Å°º¸µå¿Í ¹®ÀÚÀÇ °ü°è¸¦ ¸ÕÀú ¾Ë¾Æ º¼ ÇÊ¿ä°¡ ÀÖ´Ù. Å°º¸µå¿¡ ÀÇÇØ ¹®ÀÚ°¡ ¾î¶² ½ÄÀ¸·Î ÀԷµǴÂÁö¸¦ ¿¬±¸Çغ¸ÀÚ.

Å°º¸µå´Â Å°º¸µå µå¶óÀ̹ö°¡ °ü¸®Çϴµ¥ »ç¿ëÀÚ°¡ Å°¸¦ ´©¸£°Å³ª ¶¿ ¶§ µå¶óÀ̹ö´Â Å°ÀÇ ´­¸²°ú ¶³¾îÁüÀ» ¿î¿µÃ¼Á¦¿¡ º¸°í(ÀÎÅÍ·´Æ®)ÇÑ´Ù. ¿î¿µÃ¼Á¦´Â Å°º¸µå µå¶óÀ̹ö·ÎºÎÅÍ ÀÌ º¸°í¸¦ ¹Þ¾ÒÀ» ¶§ Æ÷Ä¿½º¸¦ °¡Áø À©µµ¿ì¿¡°Ô ¸Þ½ÃÁö¸¦ Àü´ÞÇÏ¿© Å°º¸µå·ÎºÎÅÍ ÀÔ·ÂÀÌ ÀÖ¾úÀ½À» ¾Ë·ÁÁØ´Ù. À̶§ Àü´ÞµÇ´Â ¸Þ½ÃÁö´Â <Alt>Å°ÀÇ ´­¸² ¿©ºÎ¿Í Å°ÀÇ »óÅ¿¡ µû¶ó WM_(SYS)KEYDOWN(UP) Áß Çϳª°¡ µÈ´Ù. ¹°·Ð wParam, lParamÀ¸·Î´Â ¾î¶² Å°°¡ ´­·¯Á³´ÂÁö, ´Ù¸¥ Å°ÀÇ »óÅ´ ¾î¶²Áö¿¡ ´ëÇÑ Á¤º¸°¡ Àü´ÞµÉ °ÍÀÌ´Ù.

Å°º¸µå´Â Å°ÀÇ ´­¸²°ú ¶³¾îÁüÀ» º¸°íÇÒ »ÓÀÌÁö ¹®ÀÚÀÇ ÀԷ¿¡´Â ÀüÇô °ü¿©ÇÏÁö ¾Ê´Â´Ù. ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ Å°º¸µå ¸Þ½ÃÁö·ÎºÎÅÍ ÀÔ·ÂµÈ ¹®ÀÚ¸¦ °è»êÇØ ³»¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î <r>Å°°¡ ´­·¯Á³À¸¸é r ¹®ÀÚ¸¦ ÀԷ¹ްí, <\>Å°°¡ ´­·¯Á³À¸¸é \ ¹®ÀÚ¸¦ ÀԷ¹ÞÀ¸¸é µÈ´Ù. ±×·±µ¥ ´­·¯Áø Å°·ÎºÎÅÍ ´ëÀÀµÇ´Â ¹®ÀÚ¸¦ ¾Ë¾Æ³»´Â ÀÛ¾÷ÀÌ »ý°¢Ã³·³ ±×·¸°Ô °£´ÜÇÏÁö°¡ ¾Ê´Ù. <r>Å°¸¦ ´­·¶À» ¶§ ÀԷµǾî¾ß ÇÒ ¹®ÀÚ´Â r, R, ¤¡, ¤¢ ³Ý Áß Çϳª°¡ µÇ´Âµ¥ ÇѱÛÅ°, <Shift>, <Caps Lock> µî ÁÖº¯ »óȲ¿¡ ¸¹Àº ¿µÇâÀ» ¹Þ°Ô µÈ´Ù.

»Ó¸¸ ¾Æ´Ï¶ó ÇöÀç Å°º¸µå°¡ 2¹ú½ÄÀÎÁö 3¹ú½ÄÀÎÁö, ¶Ç ÀϺ»¾î ¸ðµåÀÎÁö ·¯½Ã¾Æ¾î ¸ðµåÀÎÁö¿¡ µû¶ó¼­µµ ½ÇÁ¦ ÀԷ¹ÞÀ» ¹®ÀÚ°¡ ´Þ¶óÁø´Ù. ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ WM_KEYDOWNÀ» ¹Þ¾Æ ÀÌ ¸Þ½ÃÁö·ÎºÎÅÍ Á¤È®ÇÑ ¹®ÀÚ Çؼ®À» Á÷Á¢ ÇÏ´Â °ÍÀº ¹«Ã´ ¾î·Æ°í ¹ø°Å·Î¿î ÀÏÀÌ´Ù. ±×·¡¼­ ¿î¿µÃ¼Á¦¿¡°Ô Áö±Ý ¹ÞÀº Å°º¸µå ¸Þ½ÃÁö¸¦ ¾î¶² ¹®ÀÚ·Î Çؼ®ÇØ¾ß ÇÒ Áö¸¦ ¹°¾î º¼ ¼ö Àִµ¥ ÀÌ ¶§ »ç¿ëÇÏ´Â ÇÔ¼ö°¡ ¹Ù·Î TranslateMessage ÇÔ¼öÀÌ´Ù. ÀÌ ÇÔ¼ö´Â Åë»ó ¸Þ½ÃÁö ·çÇÁ¿¡ Æ÷ÇԵǾî ÀÖÀ¸¸ç GetMessage°¡ Å¥¿¡¼­ ¸Þ½ÃÁö¸¦ ²¨³»´Â Áï½Ã È£ÃâµÈ´Ù.

 

while(GetMessage(&Message,0,0,0)) {

     TranslateMessage(&Message);

     DispatchMessage(&Message);

}

 

¹ÞÀº ¸Þ½ÃÁö°¡ WM_KEYDOWNÀÏ °æ¿ì TranslateMessage ÇÔ¼ö´Â ÇöÀç Å°º¸µåÀÇ ·¹À̾ƿô, Shift, Caps Lock, ±âŸ ÀԷ¸ðµå µîÀÇ ¿©·¯ °¡Áö »óŸ¦ Á¾ÇÕÀûÀ¸·Î ÆÇ´ÜÇÏ¿© ÃÖÁ¾ÀûÀ¸·Î ÀԷµǾî¾ß ÇÒ ¹®ÀÚ¸¦ °è»êÇØ ³»¸ç ±× °á°ú¸¦ WM_CHAR ¸Þ½ÃÁö·Î º¸³»ÁØ´Ù. ¸¸¾à Å°º¸µå ¸Þ½ÃÁö°¡ ¾Æ´Ï°Å³ª ¹®ÀÚ¿Í »ó°ü¾ø´Â Å°ÀÏ °æ¿ì, ¿¹¸¦ µé¾î Æã¼ÇÅ°³ª Ä¿¼­À̵¿Å°ÀÎ °æ¿ì´Â ¾Æ¹« Àϵµ ÇÏÁö ¾ÊÀ¸¸ç DispatchMessage·Î ÀÌ ¸Þ½ÃÁö¸¦ Àü´ÞÇÏ¿© WndProcÀ¸·Î ¸Þ½ÃÁö¸¦ º¸³½´Ù.

±×·¡¼­ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ¹®ÀÚ¸¦ ÀԷ¹ÞÀ¸·Á¸é ´Ù¸¥ °ÍÀº ½Å°æ¾µ ÇÊ¿ä¾øÀÌ WM_CHAR ¸Þ½ÃÁö¸¦ ¹Þ°í wParamÀ¸·Î ¾î¶² ¹®ÀÚÄڵ尡 ¿Ô´ÂÁö¸¸ º¸¸é µÇ´Â °ÍÀÌ´Ù. ¿ä¾àÇÏÀÚ¸é ¹®ÀÚÀÔ·ÂÀ» ¹ÞÀ» ¶§´Â WM_CHAR ¸Þ½ÃÁö¸¦ ÇÁ·Î±×·¡¹ÖÇØ¾ß Çϸç ÀÌ ¸Þ½ÃÁö¸¦ »ç¿ëÇϸé ÃÖÁ¾ÀûÀ¸·Î ÀÔ·ÂµÈ ¹®ÀÚ¸¸ ¹ÞÀ» ¼ö ÀÖ´Ù.