WM_PAINT

Àμö

wParam : ±×¸®±â¿¡ »ç¿ëÇÒ DC ÇÚµéÀÌ Àü´ÞµÇ¸ç ÀÌ °ªÀÌ NULLÀÏ °æ¿ì µðÆúÆ® DC¿¡ ±×·Á¾ß ÇÑ´Ù. ÀÌ Àμö·Î Àü´ÞµÇ´Â DC´Â ÀϺΠ°øÅë ÄÁÆ®·Ñ¿¡ ÀÇÇØ »ç¿ëµÉ »ÓÀ̸ç ÀϹÝÀûÀÎ ¸ñÀûÀ¸·Î´Â »ç¿ëÇÏÁö ¾Ê´Â °ÍÀÌ ¾ÈÀüÇÏ´Ù. ÀÌ DC Çڵ麸´Ù´Â BeginPaint ÇÔ¼ö°¡ ¸®ÅÏÇÏ´Â DC ÇÚµéÀ» »ç¿ëÇÏ´Â °ÍÀÌ ÁÁ´Ù.

¼³¸í

À©µµ¿ìÀÇ ÀÛ¾÷ ¿µ¿ªÁß ÀϺΰ¡ ¹«È¿È­µÇ¾î ÀÖÀ» ¶§ ½Ã½ºÅÛÀÌ ÀÌ ¸Þ½ÃÁö¸¦ Å¥¿¡ ³Ö¾îÁØ´Ù. ´ÙÀ½°ú °°Àº °æ¿ì¿¡ ¹«È¿ ¿µ¿ªÀÌ ¼³Á¤µÇ¸ç À̶§¸¶´Ù WM_PAINT¸Þ½ÃÁö°¡ Àü´ÞµÈ´Ù.

¨ç À©µµ¿ì°¡ óÀ½ »ý¼ºµÇ¾úÀ» ¶§
¨è À©µµ¿ìÀÇ À§Ä¡°¡ À̵¿µÇ¾úÀ» ¶§
¨é À©µµ¿ìÀÇ Å©±â°¡ º¯°æµÇ¾úÀ» ¶§. ÃÖ´ë, ÃÖ¼ÒÈ­µÇ¾úÀ» ¶§
¨ê ´Ù¸¥ À©µµ¿ì¿¡ °¡·ÁÁ® ÀÖ´Ù°¡ µå·¯³¯ ¶§
¨ë ½ºÅ©·Ñ µÉ ¶§

¶Ç´Â ÀÀ¿ë ÇÁ·Î±×·¥ ³»ºÎ¿¡¼­ InvalidateRect ÇÔ¼ö È£Ãâ¿¡ ÀÇÇØ °­Á¦·Î ¹«È¿ ¿µ¿ªÀ» ¼³Á¤ÇÒ ¼ö ÀÖ´Ù. À©µµ¿ì´Â ÀÌ ¸Þ½ÃÁö¸¦ ¹Þ¾ÒÀ» ¶§ ÀÛ¾÷ ¿µ¿ª Àüü ¶Ç´Â ¹«È¿È­µÈ ºÎºÐÀ» ´Ù½Ã ±×·Á¾ß ÇÑ´Ù. ¿î¿µÃ¼Á¦´Â À©µµ¿ìÀÇ ÀÛ¾÷¿µ¿ªÀ» º¹±¸ÇØ ÁÖÁö ¾Ê´Â ´ë½Å¿¡ ¹«È¿È­µÉ ¶§ ÀÌ ¸Þ½ÃÁö¸¦ º¸³» ÁÜÀ¸·Î½á À©µµ¿ì¿¡°Ô ´Ù½Ã ±×·Á¾ß ÇÒ ½ÃÁ¡À» ¾Ë·Á Áֱ⸸ ÇÑ´Ù. µû¶ó¼­ À©µµ¿ì´Â ÀÚ½ÅÀÇ ÀÛ¾÷¿µ¿ª¿¡ Ãâ·ÂÇÒ ¼ö ÀÖ´Â ¸ðµç ÀڷḦ ¿Ïº®ÇÏ°Ô ÀúÀåÇØ µÎ¾î¾ß ÇÑ´Ù.

WM_PAINT ¸Þ½ÃÁö´Â ¸ðµç ¸Þ½ÃÁö Áß¿¡ ¿ì¼± ¼øÀ§°¡ °¡Àå ´Ê´Ù. GetMessage ÇÔ¼ö´Â ¸Þ½ÃÁö Å¥¿¡ WM_PAINT°¡ ÀÖ´õ¶óµµ ´Ù¸¥ ¸Þ½ÃÁö°¡ ´ë±âÁßÀ̸é ÀÌ ¸Þ½ÃÁö¸¦ ¸ÕÀú ó¸®ÇÑ´Ù. WM_PAINT ¸Þ½ÃÁö´Â Å¥¿¡ ´ë±âÁßÀÎ ´Ù¸¥ ¸Þ½ÃÁö°¡ ¾øÀ» ¶§, ±×¸®°í ¹«È¿ ¿µ¿ªÀÌ Á¸ÀçÇÒ ¶§¸¸ À©µµ¿ì ÇÁ·Î½ÃÀú·Î º¸³»Áø´Ù. ¶ÇÇÑ WM_PAINT ¸Þ½ÃÁö´Â Çѹø¿¡ Çϳª¸¸ ¸Þ½ÃÁö Å¥¿¡ µé¾î°¥ ¼ö ÀÖ´Ù. ¸¸¾à ¹«È¿¿µ¿ªÀÌ »ý°åÀ» ¶§ WM_PAINT ¸Þ½ÃÁö°¡ ÀÌ¹Ì ¸Þ½ÃÁö Å¥¿¡ ÀÖÀ¸¸é ±âÁ¸ÀÇ ¹«È¿¿µ¿ª°ú »õ ¹«È¿¿µ¿ªÀÇ ÇÕÁýÇÕÀ¸·Î »õ·Î¿î ¹«È¿¿µ¿ªÀÌ ¼³Á¤µÈ´Ù.

À©µµ¿ì°¡ ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇÏÁö ¾ÊÀ¸¸é ÀÌ ¸Þ½ÃÁö´Â DefWindowProc ÇÔ¼ö°¡ ó¸®ÇÑ´Ù. ÀÌ ÇÔ¼ö´Â ¹«È¿¿µ¿ªÀ» ¸ðµÎ À¯È¿È­È­±â¸¸ ÇÏ¸ç ´Ù½Ã ±×¸®±â´Â ÇÏÁö ¾Ê´Â´Ù. ¸¸¾à ºñÀÛ¾÷ ¿µ¿ªµµ ±×·ÁÁ®¾ß ÇÑ´Ù¸é WM_NCPAINT ¸Þ½ÃÁö¸¦ Àü´ÞÇÏ¸ç ¶ÇÇÑ ¹è°æÀ» Áö¿ö¾ß ÇÑ´Ù¸é WM_ERASEBKGND ¸Þ½ÃÁö¸¦ Àü´ÞÇÑ´Ù.

WM_PAINT ¸Þ½ÃÁö¿¡¼­ ±×¸®±â¸¦ ÇÒ ¶§´Â BeginPaint ÇÔ¼ö¿Í EndPaint ÇÔ¼ö¸¦ »ç¿ëÇØ¾ß ÇÑ´Ù. ÀÌ µÎ ÇÔ¼ö´Â WM_PAINT³»¿¡¼­¸¸ »ç¿ëµÇ¸ç ´Ù½Ã ±×·Á¾ß ÇÒ ¿µ¿ª¿¡ ´ëÇÑ Á¤È®ÇÑ ÁÂÇ¥¸¦ Á¶»çÇÏ¸ç ¹«È¿¿µ¿ªÀ» À¯È¿È­ÇÏ°í ij·µÀ» ¼û±â°Å³ª ¹è°æÀ» Áö¿ì´Â µîÀÇ ²À ÇÊ¿äÇÑ µ¿ÀÛÀ» ÇÑ´Ù.

¸®ÅÏ

ÀÌ ¸Þ½ÃÁö¸¦ ó¸®ÇßÀ¸¸é 0À» ¸®ÅÏÇÑ´Ù.

¿¹Á¦

¿¹Á¦ 1

´ÙÀ½ ¿¹Á¦´Â ¹®ÀÚ¿­ º¯¼ö g_Str¿¡ Á¤ÀǵǾî ÀÖ´Â ¹®ÀÚ¿­À» WM_PAINT¿¡¼­ È­¸éÀ¸·Î Ãâ·ÂÇÑ´Ù. ÀÌ À©µµ¿ì°¡ °¡·ÁÁö°Å³ª ÃÖ¼ÒÈ­µÇ´õ¶óµµ ¹«È¿È­µÉ ¶§¸¶´Ù WM_PAINT¿¡¼­ ´Ù½Ã Ãâ·ÂÇϹǷΠÇ×»ó ÀÌ ¹®ÀÚ¿­ÀÌ º¸ÀδÙ.

char g_Str[]="ÀÌ ¹®ÀÚ¿­Àº Ç×»ó º¸ÀδÙ";
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;

	switch(iMessage) {
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		TextOut(hdc,10,10,g_Str,lstrlen(g_Str));
		EndPaint(hWnd, &ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

¸¸¾à ÇÁ·Î±×·¥ ³»ºÎ¿¡¼­ ÀÌ ¹®ÀÚ¿­À» ÆíÁýÇϰųª º¯°æÇÒ °æ¿ì InvalidateRect ÇÔ¼ö·Î ÀÛ¾÷¿µ¿ªÀ» ¹«È¿È­ÇÏ¿© ´Ù½Ã Ãâ·ÂÇϵµ·Ï ÇØ¾ß ÇÑ´Ù.

¿¹Á¦ 2

´ÙÀ½ ¿¹Á¦´Â È­¸éÀÇ Æ¯Á¤ÇÑ ÁÂÇ¥¿¡ µµÇüÀ» ±×¸®°í Å°º¸µå·Î ÀÌ µµÇüÀÇ À§Ä¡¸¦ ¿Å±ä´Ù. Àü¿ª º¯¼ö x,y¿¡ µµÇüÀÇ ÇöÀç À§Ä¡°¡ ÀúÀåµÇ¾î ÀÖÀ¸¸ç WM_PAINT¿¡¼­´Â Ç×»ó ÀÌ À§Ä¡¿¡ µµÇüÀ» Ãâ·ÂÇÑ´Ù. µµÇüÀÇ À§Ä¡¸¦ º¯°æÇÏ´Â WM_KEYDOWN¿¡¼­´Â x,y°ªÀ» ¹Ù²Û ÈÄ ÀÛ¾÷ ¿µ¿ª¸¸ ¹«È¿È­ÇÒ »Ó Á÷Á¢ µµÇüÀ» ¿Å±âÁö´Â ¾Ê´Â´Ù.

int x,y;
LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;

	switch(iMessage) {
	case WM_CREATE:
		x=100;
		y=100;
		return 0;
	case WM_KEYDOWN:
		switch(wParam) {
		case VK_LEFT:
			x-=5;
			InvalidateRect(hWnd,NULL,TRUE);
			break;
		case VK_RIGHT:
			x+=5;
			InvalidateRect(hWnd,NULL,TRUE);
			break;
		case VK_UP:
			y-=5;
			InvalidateRect(hWnd,NULL,TRUE);
			break;
		case VK_DOWN:
			y+=5;
			InvalidateRect(hWnd,NULL,TRUE);
			break;
		}
		return 0;
	case WM_PAINT:
		hdc=BeginPaint(hWnd, &ps);
		Rectangle(hdc,x,y,x+100,y+100);
		SelectObject(hdc,GetStockObject(GRAY_BRUSH));
		Ellipse(hdc,x+10,y+10,x+90,y+90);
		EndPaint(hWnd, &ps);
		return 0;
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

½ÇÇàÁßÀÇ ¸ð½ÀÀº ´ÙÀ½°ú °°´Ù. ÀÌ ¿¹Á¦¿Í °°ÀÌ È­¸éÀÌ º¯°æµÇ´Â µ¿ÀÛÀ» ÇÑ °æ¿ì´Â Á÷Á¢ È­¸éÀ» ´Ù½Ã ±×¸®Áö ¾Ê°í ³»ºÎ Á¤º¸¸¸À» º¯°æÇÑ ÈÄ ÀÛ¾÷¿µ¿ªÀ» ¹«È¿È­ÇÏ¿© WM_PAINT¿¡¼­ ´Ù½Ã ±×¸®µµ·Ï ÇØ¾ß ÇÑ´Ù.

ÃÖ´ëÇÑ ÀÛÀº ¿µ¿ª¸¸À» ±×¸®°íÀÚ ÇÒ °æ¿ì´Â PAINTSTRUCT ±¸Á¶Ã¼¸¦ ÀûÀýÈ÷ È°¿ëÇØ¾ß ÇÑ´Ù.

Ç÷§Æû

95ÀÌ»ó

ÂüÁ¶

12Àå


written by http://www.winapi.co.kr