PeekMessage

¿øÇü

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 : Á¶»çÇÑ ¸Þ½ÃÁö¸¦ ó¸®ÇÒ ¹æ¹ýÀ» ÁöÁ¤ÇÏ´Â Ç÷¡±×ÀÇ Á¶ÇÕÀÌ´Ù.

Ç÷¡±× ¼³¸í

PM_NOREMOVE

¸Þ½ÃÁö¸¦ ÀÐÀº ÈÄ Å¥¿¡¼­ ¸Þ½ÃÁö¸¦ Á¦°ÅÇÏÁö ¾Ê´Â´Ù.

PM_REMOVE ¸Þ½ÃÁö¸¦ ÀÐÀº ÈÄ Å¥¿¡¼­ ¸Þ½ÃÁö¸¦ Á¦°ÅÇÑ´Ù.
PM_NOYIELD ´Ù¸¥ ½º·¹µå·Î Á¦¾î¸¦ ¾çº¸ÇÏÁö ¾Ê´Â´Ù.
PM_QS_INPUT

µðÆúÆ®·Î ÀÌ ÇÔ¼ö´Â ¸ðµç ¸Þ½ÃÁö¸¦ ´Ù ó¸®Çϴµ¥ ÀÌÇÏÀÇ Ç÷¡±×µéÀ» ÁöÁ¤Çϸé ƯÁ¤ ¸Þ½ÃÁöµé¸¸ ó¸®Çϵµ·Ï ÇÒ ¼ö ÀÖ´Ù. ÀÌ Ç÷¡±×µéÀº 98ÀÌ»ó, 2000À̻󿡼­¸¸ Àû¿ëµÈ´Ù.

¸¶¿ì½º³ª Å°º¸µå µîÀÇ ÀÔ·Â ¸Þ½ÃÁö¸¸ ó¸®ÇÑ´Ù.

PM_QS_PAINT ±×¸®±â ¸Þ½ÃÁö¸¸ ó¸®ÇÑ´Ù.
PM_QS_POSTMESSAGE ŸÀ̸ӳª ÇÖÅ° ¸Þ½ÃÁö¸¦ Æ÷ÇÔÇÏ¿© ºÙ¿©Áö´Â ¸Þ½ÃÁö¸¸ ó¸®ÇÑ´Ù.
PM_QS_SENDMESSAGE º¸³»Áö´Â ¸Þ½ÃÁö¸¸ ó¸®ÇÑ´Ù.
¸®ÅÏ

¸Þ½ÃÁö Å¥¿¡ ¸Þ½ÃÁö°¡ ÀÖÀ¸¸é 0ÀÌ ¾Æ´Ñ °ªÀ» ¸®ÅÏÇÏ¸ç ¸Þ½ÃÁö°¡ ¾øÀ¸¸é 0À» ¸®ÅÏÇÑ´Ù.

¼³¸í

GetMessage ÇÔ¼ö¿Í ¸¶Âù°¡Áö·Î ¸Þ½ÃÁö Å¥¿¡¼­ ¸Þ½ÃÁö¸¦ Àд´Ù. ¸Þ½ÃÁöÀÇ ¹üÀ§¸¦ ÁÙ ¼ö ÀÖ´Â ±â´Éµµ GetMessage¿Í µ¿ÀÏÇÏ´Ù. ±×·¯³ª ÀÌ ÇÔ¼ö´Â GetMessage¿Í´Â ´Þ¸® ÀÐÀº ¸Þ½ÃÁö¸¦ ¹«Á¶°Ç Á¦°ÅÇÏÁö ¾ÊÀ¸¸ç Å¥°¡ ºñ¾î ÀÖÀ» °æ¿ì ´ë±âÇÏÁö ¾Ê°í °ð¹Ù·Î ¸®ÅÏÇÑ´Ù´Â Á¡ÀÌ ´Ù¸£´Ù. µû¶ó¼­ ÀÌ ÇÔ¼ö´Â ¸Þ½ÃÁö¸¦ ÀÐÁö ¾Ê°í ´Ü¼øÈ÷ ¸Þ½ÃÁö°¡ ÀÖ´ÂÁö È®Àθ¸ ÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ·± Ư¼ºÀº ¹é±×¶ó¿îµå ÀÛ¾÷¿¡ ÀûÀýÇÏ´Ù.

¿¹Á¦ 1

´ÙÀ½ ¿¹Á¦´Â ¸Þ½ÃÁö ·çÇÁ¿¡ 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 ¸Þ½ÃÁö¿¡ ´ëÇؼ­´Â Ưº°ÇÑ ¿¹¿Ü󸮸¦ ÇÏ¿© ¸Þ½ÃÁö ·çÇÁ¸¦ ¹þ¾î³¯ ¼ö ÀÖµµ·Ï ÇØ ÁÖ¾î¾ß ÇÁ·Î±×·¥ÀÌ Á¾·áµÈ´Ù.

¿¹Á¦ 2

´ÙÀ½ ¿¹Á¦ÀÇ 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