| ¿øÇü |
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
|