°¢ ÀÌ·¯ÇÑ ¼¼ °¡Áö ±â´É¿¡ ´ë ÇÑ ÇÔ¼ö È£ÃâÀÇ °£´ÜÇÑ ¸Þ½ÃÁö ·çÇÁ ±¸¼º: GetMessage, TranslateMessage DispatchMessage.
MSG ¸Þ½ÃÁö;
(GetMessage (amp; msg, NULL, 0, 0)) µ¿¾È
{
TranslateMessage (& msg);
DispatchMessage (& msg);
}
GetMessage ÇÔ¼ö´Â Å¥¿¡¼ ¸Þ½ÃÁö¸¦ °Ë»ö ÇÏ °í ¸Þ½ÃÁöÇü½ÄÀÇ ±¸Á¶¿¡ º¹»ç ÇÕ´Ï´Ù. ¹ß»ý WM_QUIT ¸Þ½ÃÁöÀÇ °æ¿ì FALSE¸¦ ¹Ýȯ ÇÏ´Â °æ¿ì°¡ ¾Æ´Ï¸é 0ÀÌ ¾Æ´Ñ °ªÀ» ¹Ýȯ ÇÏ °í ·çÇÁ¸¦ Á¾·á ÇÕ´Ï´Ù. ´ÜÀÏ ½º·¹µå ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼ ¸Þ½ÃÁö ·çÇÁ ³¡Àº Á¾Á¾ ÀÀ¿ë ÇÁ·Î±×·¥À» Á¾·á Çϴ ù ¹øÂ° ´Ü°èÀÔ´Ï´Ù. ÀÀ¿ë ÇÁ·Î±×·¥Àº ÀϹÝÀûÀ¸·Î ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ¸ÞÀÎ À©µµ¿ìÀÇ Ã¢ ÇÁ·Î½ÃÀú¿¡¼ WM_DESTROY ¸Þ½ÃÁö¿¡ ´ë ÇÑ ÀÀ´ä¿¡¼ PostQuitMessage ÇÔ¼ö¸¦ »ç¿ë ÇÏ ¿© ÀÚü ·çÇÁ¸¦ ³¡³¾ ¼ö ÀÖ½À´Ï´Ù.
GetMessageÀÇ µÎ ¹øÂ° ¸Å°³ º¯¼ö·Î â ÇÚµéÀ» ÁöÁ¤ ÇÏ´Â °æ¿ì ÁöÁ¤ µÈ â¿¡ ´ë ÇÑ ¸Þ½ÃÁö¸¸ Å¥¿¡¼ °Ë»ö µË´Ï´Ù. GetMessage ¼ö ¶ÇÇÑ Å¥¿¡ ÀÖ´Â ¸Þ½ÃÁö ÇÊÅ͸µ ÁöÁ¤µÈ µÈ ¹üÀ§ ³»¿¡ ¼ÓÇÏ´Â ¸Þ½ÃÁö¸¦ °Ë»ö ÇÕ´Ï´Ù. ¸Þ½ÃÁö ÇÊÅ͸µ¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ¸Þ½ÃÁö ÇÊÅ͸µ À» ÂüÁ¶ ÇϽʽÿÀ.
Űº¸µå¿¡¼ ¹®ÀÚ ÀÔ·ÂÀ» ¼ö½Å ÇÏ´Â ½º·¹µå°¡ °æ¿ì ½º·¹µåÀÇ ¸Þ½ÃÁö ·çÇÁ TranslateMessage À» Æ÷ÇÔ ÇØ¾ß ÇÕ´Ï´Ù. ½Ã½ºÅÛÀº »ç¿ëÀÚ°¡ ۸¦ ´©¸¦ ¶§¸¶´Ù °¡»ó Ű ¸Þ½ÃÁö (WM_KEYDOWN °ú WM_KEYUP)¸¦ »ý¼º ÇÕ´Ï´Ù. °¡»ó Ű ¸Þ½ÃÁö´Â °¡»ó Ű Äڵ带 ½Äº° Çϴ Ű¸¦ ´·¶À», ÇÏÁö¸¸ ÇØ´ç ¹®ÀÚ °ªÀ» Æ÷ÇÔ ÇÕ´Ï´Ù. ÀÌ °ªÀ» °Ë»ö ÇÏ·Á¸é ¸Þ½ÃÁö ·çÇÁ TranslateMessage, ¹®ÀÚ ¸Þ½ÃÁö (WM_CHAR)·Î °¡»ó Ű ¸Þ½ÃÁö¸¦ º¯È¯ ÇÏ °í ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ¸Þ½ÃÁö Å¥¿¡ ´Ù½Ã ¹èÄ¡ ÇÏ´Â ÀÖ¾î¾ß ÇÕ´Ï´Ù. ¹®ÀÚ ¸Þ½ÃÁö ¼ö ÀÖ½À´Ï´Ù ´ÙÀ½ ¸Þ½ÃÁö ·çÇÁÀÇ ÈÄ¼Ó ¹Ýº¹ ½Ã Á¦°Å µÉ ¹× â ÇÁ·Î½ÃÀú¿¡ Àü´Þ.
DispatchMessage ÇÔ¼ö MSG ±¸Á¶Ã¼¿¡ ÁöÁ¤ µÈ â ÇÚµéÀ» ¿¬°ü â ÇÁ·Î½ÃÀú¿¡ ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù. â ÇÚµé HWND_TOPMOST À̸é DispatchMessage ½Ã½ºÅÛ¿¡¼ ¸ðµç ÃÖ»óÀ§ â¿¡ ´ë ÇÑ Ã¢ ÇÁ·Î½ÃÀú¸¦ ¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù. â ÇÚµéÀÌ NULL À̸é DispatchMessage ¸Þ½ÃÁö¿Í ÇÔ²² ¾Æ¹«°Íµµ ÇÏÁö ¾Ê´Â´Ù.
ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÁÖ ½º·¹µå´Â ÀÀ¿ë ÇÁ·Î±×·¥À» ÃʱâÈ ÇÏ °í Çϳª ÀÌ»óÀÇ Ã¢À» ¸¸µç ÈÄ ¸Þ½ÃÁö ·çÇÁ¸¦ ½ÃÀÛ ÇÕ´Ï´Ù. ½ÃÀÛ µÇ ¸é ¸Þ½ÃÁö ·çÇÁ´Â ½º·¹µåÀÇ ¸Þ½ÃÁö Å¥¿¡¼ ¸Þ½ÃÁö¸¦ °Ë»ö ÇÏ °í ÀûÀý ÇÑ windows µð½ºÆÐÄ¡ °è¼Ó ÇÕ´Ï´Ù. ¸Þ½ÃÁö ·çÇÁ Á¾·á GetMessage ÇÔ¼ö´Â ¸Þ½ÃÁö Å¥¿¡¼ WM_QUIT ¸Þ½ÃÁö¸¦ Á¦°Å ÇÏ´Â °æ¿ì.
ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ¸¹Àº âÀ» Æ÷ÇÔ ÇÏ´Â °æ¿ì¿¡ ¸Þ½ÃÁö Å¥¿¡ ´ë ÇÑ ´Ü ÇϳªÀÇ ¸Þ½ÃÁö ·çÇÁ°¡ ÇÊ¿ä ÇÕ´Ï´Ù. DispatchMessage Ç×»ó µð½ºÆÐÄ¡ ¸Þ½ÃÁö¸¦ ÀûÀý ÇÑ Ã¢; ÀÌ ¶§¹®¿¡ °¢ ¸Þ½ÃÁö Å¥¿¡´Â ¸Þ½ÃÁö°¡ ¼ÓÇÑ Ã¢ÀÇ ÇÚµéÀ» Æ÷ÇÔ ÇÏ´Â MSG ±¸Á¶.
´Ù¾ç ÇÑ ¹æ¹ýÀ¸·Î ¸Þ½ÃÁö ·çÇÁ¸¦ ¼öÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, âÀ¸·Î ¹ß¼Û ÇÏÁö ¾Ê°í Å¥¿¡¼ ¸Þ½ÃÁö¸¦ °Ë»öÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ Ã¢À» ÁöÁ¤ ÇÏÁö ¾ÊÀ¸¸é ¸Þ½ÃÁö¸¦ °Ô½Ã ÇÏ´Â ÀÀ¿ë ÇÁ·Î±×·¥¿¡ À¯¿ë ÇÕ´Ï´Ù. ´ç½ÅÀº ¶ÇÇÑ Á÷Á¢ GetMessage ƯÁ¤ ¸Þ½ÃÁö¸¦ °Ë»ö ÇÏ·Á¸é Å¥¿¡ ´Ù¸¥ ¸Þ½ÃÁö¸¦ ³²±â´Â. ¸Þ½ÃÁö Å¥ÀÇ Æò¼Ò FIFO ¼ø¼¸¦ ÀϽÃÀûÀ¸·Î ¹«½ÃÇÒ ÇØ¾ß ÇÏ´Â °æ¿ì¿¡ À¯¿ë.
¾×¼¿·¯·¹ÀÌÅÍ Å°¸¦ »ç¿ë ÇÏ´Â ÀÀ¿ë ÇÁ·Î±×·¥Àº Űº¸µå ¸Þ½ÃÁö ¸í·É ¸Þ½ÃÁö¸¦ º¯È¯ÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÏ·Á¸é ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ¸Þ½ÃÁö ·çÇÁ TranslateAccelerator ÇÔ¼ö È£ÃâÀ» Æ÷ÇÔ ÇØ¾ß ÇÕ´Ï´Ù. ¾×¼¿·¯·¹ÀÌÅÍ Å°¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ À¥ »çÀÌÆ®¸¦ ÂüÁ¶ ÇϽʽÿÀ. Űº¸µå ¾×¼¿·¯·¹ÀÌÅÍ.
¸Þ½ÃÁö ·çÇÁ ´ëÈ »óÀÚ Å°º¸µå ÀÔ·ÂÀ» ¹ÞÀ» ¼ö ÀÖµµ·Ï IsDialogMessage ÇÔ¼ö¸¦ Æ÷ÇÔ ÇØ¾ß ÇÕ´Ï´Ù ½º·¹µå ¸ð´ú¸®½º ´ëÈ »óÀÚ¸¦ »ç¿ë ÇÏ´Â °æ¿ì.