¿øÇü |
BOOL PeekMessage(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax, UINT wRemoveMsg); | ||||||||||||||||
MFC ¿øÇü |
ÇØ´çÇÏ´Â ÇÔ¼ö ¾øÀ½ | ||||||||||||||||
Àμö |
¢ºlpMsg : ¸Þ½ÃÁö¸¦ ¹ÞÀ» ±¸Á¶Ã¼ÀÌ¸ç ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÇ¾î ÀÖ´Ù. typedef struct tagMSG { // msg HWND hwnd; UINT message; WPARAM wParam; LPARAM lParam; DWORD time; POINT pt; } MSG; ¢ºhWnd : ¸Þ½ÃÁö¸¦ ¹ÞÀ» À©µµ¿ìÀ̸ç ÀÌ À©µµ¿ì·Î º¸³»Áö´Â ¸Þ½ÃÁö¸¦ Á¶»çÇÑ´Ù. ÀÌ À©µµ¿ì´Â ¹Ýµå½Ã °°Àº ½º·¹µå¿¡ ¼Ò¼ÓµÈ À©µµ¿ì¿©¾ß ÇÏ¸ç ´Ù¸¥ ½º·¹µå·Î º¸³»Áö´Â ¸Þ½ÃÁö´Â Á¶»çÇÒ ¼ö ¾ø´Ù. ÀÌ Àμö°¡ NULLÀ̸é ÀÌ ÇÔ¼ö¸¦ È£ÃâÇÑ ½º·¹µå·Î Àü´ÞµÈ ¸ðµç ¸Þ½ÃÁö¸¦ Á¶»çÇÑ´Ù. ¢ºwMsgFilterMin : Á¶»çÇÒ ¸Þ½ÃÁöÀÇ ÃÖ¼Ò°ª. ¢ºwMsgFilterMax : Á¶»çÇÒ ¸Þ½ÃÁöÀÇ ÃÖ´ë°ª. ÀÌ µÎ Àμö¸¦ »ç¿ëÇϸé ÀÏÁ¤ÇÑ ¹üÀ§¿¡ ¼ÓÇÑ ¸Þ½ÃÁö¸¸ Á¶»çÇÒ ¼ö Àִµ¥ À̸¦ ¸Þ½ÃÁö ÇÊÅ͸µÀ̶ó°í ÇÑ´Ù. ¿¹¸¦ µé¾î Å°º¸µå °ü·Ã ¸Þ½ÃÁö¸¸ Á¶»çÇÏ°í ½ÍÀ¸¸é WM_KEYFIRST, WM_KEYLAST·Î ¹üÀ§¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. µÎ Àμö°¡ ¸ðµÎ 0ÀÌ¸é ¸Þ½ÃÁö ÇÊÅ͸µÀ» ÇÏÁö ¾ÊÀ¸¸ç ¸ðµç ¸Þ½ÃÁö¸¦ Á¶»çÇÑ´Ù. ¢ºwRemoveMsg : Á¶»çÇÑ ¸Þ½ÃÁö¸¦ ó¸®ÇÒ ¹æ¹ýÀ» ÁöÁ¤ÇÏ´Â Ç÷¡±×ÀÇ Á¶ÇÕÀÌ´Ù.
|
||||||||||||||||
¸®ÅÏ |
¸Þ½ÃÁö Å¥¿¡ ¸Þ½ÃÁö°¡ ÀÖÀ¸¸é 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÏ¸ç ¸Þ½ÃÁö°¡ ¾øÀ¸¸é 0À» ¸®ÅÏÇÑ´Ù. | ||||||||||||||||
¼³¸í |
GetMessage ÇÔ¼ö¿Í ¸¶Âù°¡Áö·Î ¸Þ½ÃÁö Å¥¿¡¼ ¸Þ½ÃÁö¸¦ Àд´Ù. ¸Þ½ÃÁöÀÇ ¹üÀ§¸¦ ÁÙ ¼ö ÀÖ´Â ±â´Éµµ GetMessage¿Í µ¿ÀÏÇÏ´Ù. ±×·¯³ª ÀÌ ÇÔ¼ö´Â GetMessage¿Í´Â ´Þ¸® ÀÐÀº ¸Þ½ÃÁö¸¦ ¹«Á¶°Ç Á¦°ÅÇÏÁö ¾ÊÀ¸¸ç Å¥°¡ ºñ¾î ÀÖÀ» °æ¿ì ´ë±âÇÏÁö ¾Ê°í °ð¹Ù·Î ¸®ÅÏÇÑ´Ù´Â Á¡ÀÌ ´Ù¸£´Ù. µû¶ó¼ ÀÌ ÇÔ¼ö´Â ¸Þ½ÃÁö¸¦ ÀÐÁö ¾Ê°í ´Ü¼øÈ÷ ¸Þ½ÃÁö°¡ ÀÖ´ÂÁö È®Àθ¸ ÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ·± Ư¼ºÀº ¹é±×¶ó¿îµå ÀÛ¾÷¿¡ ÀûÀýÇÏ´Ù. ´ÙÀ½ ¿¹Á¦´Â ¸Þ½ÃÁö ·çÇÁ¿¡ GetMessage¸¦ »ç¿ëÇÏÁö ¾Ê°í PeekMessage¸¦ »ç¿ëÇÔÀ¸·Î½á ¸Þ½ÃÁö¸¦ ó¸®ÇÏÁö ¾Ê´Âµ¿¾È ¹é±×¶ó¿îµå ÀÛ¾÷À» ÇÑ´Ù. HDC hdc; hdc=GetDC(hWnd); int count=0; char str[255]; for (;;) { if (PeekMessage(&Message,NULL,0,0,PM_REMOVE)) { if (Message.message==WM_QUIT) break; TranslateMessage(&Message); DispatchMessage(&Message); } else { count++; wsprintf(str,"ÇöÀç Ä«¿îÅÍ´Â %dÀÔ´Ï´Ù",count); TextOut(hdc,10,10,str,lstrlen(str)); } } ReleaseDC(hWnd,hdc); GetMessage ÇÔ¼ö´Â ¸Þ½ÃÁö Å¥°¡ ºñ¾î ÀÖÀ» °æ¿ì ¹«ÇÑ ´ë±â¸¦ Çϱ⠶§¹®¿¡ ¹é±×¶ó¿îµå ÀÛ¾÷À» ÇÒ ¼ö ¾øÁö¸¸ PeekMessage ÇÔ¼ö¸¦ »ç¿ëÇϸé Áï½Ã ¸®ÅÏÇÏ¸ç ¸®ÅÏ°ªÀ¸·Î ¸Þ½ÃÁöÀÇ À¯¹«¸¦ ¾Ë·Á ÁֹǷΠ0À» ¸®ÅÏÇÒ ¶§ ¹é±×¶ó¿îµå ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ÀÖ´Ù. ¿¹Á¦¿¡¼´Â Ä«¿îÆ®¸¦ ¼¼´Â ÀÛ¾÷À» ¹é±×¶ó¿îµå·Î ÇÏ°í ÀÖ´Ù. ´Ü WM_QUIT ¸Þ½ÃÁö¿¡ ´ëÇؼ´Â Ưº°ÇÑ ¿¹¿Ü󸮸¦ ÇÏ¿© ¸Þ½ÃÁö ·çÇÁ¸¦ ¹þ¾î³¯ ¼ö ÀÖµµ·Ï ÇØ ÁÖ¾î¾ß ÇÁ·Î±×·¥ÀÌ Á¾·áµÈ´Ù. ´ÙÀ½ ¿¹Á¦ÀÇ SortData ÇÔ¼ö´Â ´ë·®ÀÇ µ¥ÀÌÅ͸¦ Á¤·ÄÇÏ´Â ÇÔ¼öÀ̸ç Á¤·Ä ·çƾ´ë½Å Sleep ÇÔ¼ö·Î ½Ã°£À» ²øµµ·Ï ÇÏ¿´´Ù. void SortData() { int i; char Caption[128]; MSG Message; for (i=0;i<=1000;i++) { wsprintf(Caption,"¼ÒÆ®Áß %d%%",i/10); SetWindowText(hWndMain,Caption); Sleep(1); } } LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { switch(iMessage) { case WM_LBUTTONDOWN: SortData(); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } SortData ÇÔ¼ö°¡ ¿ÏÀüÈ÷ Á¾·áµÇ±â Àü¿¡´Â Á¦¾î¸¦ ¸®ÅÏÇÏÁö ¾ÊÀ¸¹Ç·Î ÀÌ ÇÔ¼ö°¡ ½ÇÇàÁßÀε¿¾È¿¡ À©µµ¿ì´Â ¾î¶°ÇÑ ¸Þ½ÃÁöµµ ó¸®ÇÒ ¼ö ¾ø´Ù. ÀÌ·± ½Ã°£ÀÌ ¿À·¡ °É¸®´Â ÀÛ¾÷ ·çƾ¿¡ PeekMessage ·çƾÀ» »ðÀÔÇϸé ÀÛ¾÷À» ÇÏ´Â µ¿¾È¿¡µµ À©µµ¿ì°¡ Á¤»óÀûÀ¸·Î ¸Þ½ÃÁö¸¦ ó¸®ÇÒ ¼ö ÀÖµµ·Ï ÇÑ´Ù. void SortData() { int i; char Caption[128]; MSG Message; for (i=0;i<=1000;i++) { wsprintf(Caption,"¼ÒÆ®Áß %d%%",i/10); SetWindowText(hWndMain,Caption); if (PeekMessage(&Message,NULL,0,0,PM_REMOVE)) { if (Message.message==WM_QUIT) { PostQuitMessage(0); break; } TranslateMessage(&Message); DispatchMessage(&Message); } Sleep(1); } } µ¥ÀÌÅ͸¦ Á¤·ÄÇÏ´Â µ¿¾È¿¡ ¸Þ½ÃÁö Å¥¸¦ ÁÖ±âÀûÀ¸·Î Á¡°ËÇÏ¿© ¸Þ½ÃÁö°¡ µé¾î¿À¸é ÀÌ ¸Þ½ÃÁö¸¦ À©µµ¿ì·Î º¸³»ÁÖ¾î ó¸®Çϵµ·Ï ÇØ ÁÖ¾úÀ¸¹Ç·Î Á¤·ÄÇÏ´Â µ¿¾È¿¡µµ ´Ù¸¥ ÀÛ¾÷À» ÇÒ ¼ö ÀÖ´Ù. ´Ü, ÀÌ·² °æ¿ì °°Àº ÀÛ¾÷À» µÎ¹ø ½ÇÇàÇÏÁö ¸øÇϵµ·Ï ÇÏ´Â ÀåÄ¡°¡ ÇÊ¿äÇÒ ¼öµµ ÀÖ´Ù. | ||||||||||||||||
Âü°íÇÔ¼ö |
GetMessage : ¸Þ½ÃÁö Å¥¿¡¼ ¸Þ½ÃÁö¸¦ ÀÐµÇ ¹«ÇÑ ´ë±âÇÏ¸ç ¸Þ½ÃÁö¸¦ ¹«Á¶°Ç Å¥¿¡¼ Á¦°ÅÇÑ´Ù. | ||||||||||||||||
Ç÷§Æû | 95ÀÌ»ó | ||||||||||||||||
ÂüÁ¶ |
|
written by http://www.winapi.co.kr
|