BeginPaint

¿øÇü HDC BeginPaint(HWND hwnd, LPPAINTSTRUCT lpPaint);
MFC ¿øÇü CDC* CWnd::BeginPaint( LPPAINTSTRUCT lpPaint );
Àμö

¢ºhwnd:±×¸®±â¸¦ ÇÒ À©µµ¿ì ÇÚµé. WndProcÀÇ Ã¹¹ø° Àμö·Î Àü´ÞµÈ hWndÇÚµéÀ» ³Ñ°ÜÁÖ¸é µÈ´Ù.

¢ºlpPaint:±×¸®±â Á¤º¸¸¦ ¸®ÅϹޱâ À§ÇÑ ±¸Á¶Ã¼ÀÌ¸ç ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÇ¾î ÀÖ´Ù. BeginPaint´Â Á¶»çµÈ Á¤º¸¸¦ ÀÌ ±¸Á¶Ã¼·Î ¸®ÅÏÇØ ÁÖ¸ç ÇÁ·Î±×·¥Àº È¿À²ÀûÀÎ ±×¸®±â¸¦ À§ÇØ ÀÌ ±¸Á¶Ã¼ÀÇ ¸â¹ö¸¦ ÂüÁ¶ÇÑ´Ù.

typedef struct tagPAINTSTRUCT { 
  HDC  hdc; 
  BOOL fErase; 
  RECT rcPaint; 
  BOOL fRestore; 
  BOOL fIncUpdate; 
  BYTE rgbReserved[32]; 
} PAINTSTRUCT, *PPAINTSTRUCT; 

hdc´Â ±×¸®±â¿¡ »ç¿ëµÉ DC ÇÚµéÀ̸ç fErase´Â ¹è°æÀÌ Áö¿öÁ®¾ß ÇÒ °ÍÀÎÁö¸¦ ÁöÁ¤ÇÑ´Ù. À©µµ¿ì Ŭ·¡½º¿¡ ¹è°æ ºê·¯½Ã°¡ Á¤ÀǵǾî ÀÖÁö ¾ÊÀ¸¸é fErase°¡ TRUE°¡ µÇ¸ç À̶§´Â ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ Á÷Á¢ ¹è°æÀ» Áö¿ö¾ß ÇÑ´Ù. rcPaint´Â ¹«È¿ ¿µ¿ªÀÇ ÁÂÇ¥À̸ç ÃÖ´ëÇÑ ±×¸®±â¸¦ ºü¸£°Ô Çϱâ À§ÇØ ÀÌ ¿µ¿ª¸¸ ±×¸®¸é µÈ´Ù. ³ª¸ÓÁö ¼¼ ¸â¹ö´Â ½Ã½ºÅÛÀÌ ³»ºÎÀûÀÎ ¿ëµµ·Î »ç¿ëÇÑ´Ù.

¸®ÅÏ DCÇÚµéÀ» ¸®ÅÏÇØ Áִµ¥ ÀÌ °ªÀº PAINTSTRUCT ±¸Á¶Ã¼ÀÇ hdc ¸â¹ö¿Í µ¿ÀÏÇÑ °ªÀÌ´Ù. ¿¡·¯ ¹ß»ý½Ã NULLÀ» ¸®ÅÏÇÑ´Ù.
¼³¸í

À©µµ¿ìÁî ȯ°æ¿¡¼­ È­¸éÀ̳ª ÇÁ¸°ÅÍ·Î Ãâ·ÂÀ» ÇÏ·Á¸é DC¸¦ ¸ÕÀú ±¸ÇØ¾ß ÇÑ´Ù. DC¸¦ ±¸ÇÏ´Â ÀϹÝÀûÀÎ ¹æ¹ýÀº µÎ °¡Áö°¡ Àִµ¥ GetDC¿Í ReleaseDC¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ ÀÖ°í BeginPaint¿Í EndPaint¸¦ »ç¿ëÇÏ´Â ¹æ¹ýÀÌ ÀÖ´Ù. BeginPaint¿Í EndPaint´Â ¦À» ÀÌ·ç¾î »ç¿ëµÇ¸ç ¹Ýµå½Ã WM_PAINT ¸Þ½ÃÁö ³»ºÎ¿¡¼­¸¸ »ç¿ëÇØ¾ß ÇÑ´Ù. WM_PAINT ÇÔ¼ö´Â ÀϹÝÀûÀ¸·Î ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºµÈ´Ù.

PAINTSTRUCT ps;
HDC hdc;
case WM_PAINT:
	hdc=BeginPaint(hWnd,&ps);
	°¢Á¾ Ãâ·Â¹®¿¡¼­ hdc¸¦ »ç¿ëÇÑ´Ù.
	EndPaint(hWnd,&ps);

PAINTSTRUCT ±¸Á¶Ã¼ ps¿Í HDCÇü º¯¼ö hdc¸¦ ¼±¾ðÇÑ ÈÄ BeginPaint¸¦ È£ÃâÇÏ¿© DCÇÚµéÀ» Á¶»çÇÏ°í ÀÌ ÇÚµé·Î ±×¸®±â¸¦ ÇÑ´Ù. ±×¸®°í EndPaint ÇÔ¼ö·Î ±×¸®±â¸¦ Á¾·áÇÑ´Ù. BeginPaint ÇÔ¼ö´Â ´ÙÀ½°ú °°Àº Áß¿äÇÑ ÀÏÀ» ÇÑ´Ù.

1.±×¸®±â¸¦ À§ÇØ DC ÇÚµéÀ» ±¸ÇÑ´Ù. ÀÌ ÇÚµéÀº PAINTSTRUCT ±¸Á¶Ã¼ÀÇ hdc¸â¹ö¿¡µµ ´ëÀԵǸç BeginPaint ÇÔ¼öÀÇ ¸®ÅÏ°ªÀ¸·Î µ¹·ÁÁö±âµµ ÇÑ´Ù.
2.±×¸®±â¿¡ ÇÊ¿äÇÑ Á¤º¸¸¦ PAINTSTRUCT ±¸Á¶Ã¼¿¡ ä¿î´Ù. ÀÌ ±¸Á¶Ã¼¿¡´Â ÃÖ¼ÒÇÑÀÇ ¹«È¿¿µ¿ª°ú ¹è°æ »èÁ¦¿¡ ´ëÇÑ Á¤º¸, DC ÇÚµéµîÀÌ ±â·ÏµÇ¾î ÀÖÀ¸¸ç ÀÀ¿ë ÇÁ·Î±×·¥Àº ÀÌ Á¤º¸¸¦ ÂüÁ¶ÇÏ¿© ±×¸®±â¸¦ ´õ ºü¸£°Ô ÇÒ ¼ö ÀÖ´Ù.
2.Ŭ¸®ÇÎ ¿µ¿ªÀ» Á¶»çÇÏ¿© DC¿¡ ¼³Á¤ÇÏ¿© Ŭ¸®ÇÎ ¿µ¿ª ¹Ù±ùÀ¸·Î Ãâ·ÂµÇÁö ¾Êµµ·Ï ÇÑ´Ù.
3.¹«È¿ ¿µ¿ªÀ» À¯È¿È­ÇÏ¿© ´Ù½Ã ¹«È¿ ¿µ¿ªÀÌ »ý±â±âÀü¿¡ WM_PAINT ¸Þ½ÃÁö°¡ È£ÃâµÇÁö ¾Êµµ·Ï ÇÑ´Ù.
4.ij·µÀÌ ÀÖÀ¸¸é ij·µÀ» ¼û°Ü Æı«µÇÁö ¾Êµµ·Ï ÇÑ´Ù.
5.¹«È¿ ¿µ¿ªÀÌ ¹è°æÀ» Áö¿ìµµ·Ï ¿äûÇϸé WM_ERASEBKGND ¸Þ½ÃÁö¸¦ º¸³» ¹è°æÀ» Áö¿ìµµ·Ï ÇÑ´Ù. ¶ÇÇÑ WM_NCPAINT ¸Þ½ÃÁö¸¦ º¸³» ºñÀÛ¾÷ ¿µ¿ªÀ» ±×¸®µµ·Ï ÇÑ´Ù.

BeginPaint°¡ ÀÌ·± Áß¿äÇÑ ÀÏÀ» Çϱ⠶§¹®¿¡ WM_PAINT ¸Þ½ÃÁö¿¡¼­´Â ¹Ýµå½Ã GetDC°¡ ¾Æ´Ñ BeginPaint·Î DCÇÚµéÀ» Á¶»çÇØ¾ß ÇÑ´Ù. GetDC´Â Ŭ¸®ÇÎ ¿µ¿ª °è»êÀ̳ª ¹«È¿ ¿µ¿ª À¯È¿È­¸¦ ÇØ ÁÖÁö ¾ÊÀ¸¹Ç·Î WM_PAINT¿¡¼­´Â »ç¿ëÇÒ ¼ö ¾ø´Ù.

¿¹Á¦1

´ÙÀ½ ¿¹Á¦´Â WM_PAINT¿¡¼­ Ÿ¿ø Çϳª, ÅؽºÆ® Çϳª¸¦ Ãâ·ÂÇÑ´Ù.

long FAR PASCAL WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
	HDC hdc;
	PAINTSTRUCT ps;

	switch(iMessage) {
	case WM_DESTROY:
		PostQuitMessage(0);
		return 0;
	case WM_PAINT:
		hdc=BeginPaint(hWnd,&ps);
		Ellipse(hdc,10,10,200,90);
		TextOut(hdc,100,100,"Beautiful Korea",15);
		EndPaint(hWnd,&ps);
		return 0;
	}
	return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}

WM_PAINT·Î DC ÇÚµéÀ» ¹ß±Þ¹Þ¾Æ hdcº¯¼ö¿¡ ´ëÀÔÇÏ¿´À¸¸ç ÀÌ ÇÚµéÀº Ellipse, TextOut ÇÔ¼öÀÇ Ã¹¹ø° Àμö·Î »ç¿ëµÈ´Ù.

Âü°íÇÔ¼ö EndPaint, InvalidateRect, GetDC
Ç÷¿Æû 95ÀÌ»ó
ÂüÁ¶

DCÀÇ Á¤ÀÇ¿¡ ´ëÇؼ­´Â 3ÀåÀ» ÂüÁ¶ÇÑ´Ù.

±×¸®±â¿Í PAINTSTRUCT¿¡ ´ëÇؼ­´Â 12ÀåÀ» ÂüÁ¶ÇÑ´Ù.


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