¿øÇü | BOOL InvalidateRect(HWND hWnd, CONST RECT *lpRect, BOOL bErase); |
MFC ¿øÇü | void CWnd::InvalidateRect( LPCRECT lpRect, BOOL bErase = TRUE ); |
Àμö |
¢ºhWnd:¹«È¿ ¿µ¿ªÀ» ¼³Á¤ÇÒ À©µµ¿ìÀÇ ÇÚµé. NULLÀÏ °æ¿ì ¸ðµç À©µµ¿ì¸¦ ¹«È¿ÈÇÑ´Ù. ¢ºlpRect:¹«È¿ÈÇÒ ¿µ¿ª. NULLÀ̸é ÀÛ¾÷ ¿µ¿ª Àüü°¡ ¹«È¿ÈµÈ´Ù. ¢ºbErase:¹«È¿ ¿µ¿ªÀÇ ¹è°æÀ» ¸ÕÀú Áö¿ï °ÍÀΰ¡¸¦ ÁöÁ¤ÇÑ´Ù. TRUEÀ̸é BeginPaint ÇÔ¼ö°¡ ¹è°æÀ» ¸ÕÀú Áö¿î ÈÄ ÀÛ¾÷ ¿µ¿ªÀ» ±×¸°´Ù. |
¸®ÅÏ | ¼º°øÇϸé nonzero, ½ÇÆнà 0À» ¸®ÅÏÇÑ´Ù. |
¼³¸í |
¿î¿µÃ¼Á¦´Â À©µµ¿ìÀÇ ÀÛ¾÷ ¿µ¿ªÁß ÀϺο¡ ¹«È¿ ¿µ¿ªÀÌ ÀÖÀ¸¸é WM_PAINT ¸Þ½ÃÁö¸¦ º¸³» ´Ù½Ã ±×¸®µµ·Ï ÇÑ´Ù. ÇÁ·Î±×·¥ ³»ºÎ¿¡¼ ÀÛ¾÷ ¿µ¿ªÀ» º¯°æÇÑ °æ¿ì ÀÌ ÇÔ¼ö·Î º¯°æµÈ ºÎºÐÀ» ¹«È¿ÈÇØ ÁÖ¾î¾ß WM_PAINT ¸Þ½ÃÁö°¡ ¹ß»ýÇϸç ȸéÀÌ ´Ù½Ã ±×·ÁÁø´Ù. ¹è°æÀ» Áö¿ì°í ±×·Á¾ß ÇÒ ¶§´Â bErase¸¦ TRUE·Î ¼³Á¤ÇØ ÁÖ¾î¾ß ÀÌÀü¿¡ Ãâ·ÂµÇ¾î ÀÖ´ø ³»¿ëÀÌ »èÁ¦µÇ°í ´Ù½Ã ±×·ÁÁø´Ù. ±×¸®±â ¼Óµµ¸¦ ÃÖ´ëÇÑ ºü¸£°Ô ÇÏ·Á¸é lpRect¿¡ ¹«È¿ÈÇÒ ÃÖ¼ÒÇÑÀÇ ¿µ¿ªÀ» ÁöÁ¤ÇÏ¿© ²À ÇÊ¿äÇÑ ºÎºÐ¸¸ ´Ù½Ã ±×¸®µµ·Ï ÇØ ÁÖ¾î¾ß ÇÑ´Ù. ´ÙÀ½ ¿¹Á¦´Â Å°º¸µå·ÎºÎÅÍ ¹®ÀÚ¸¦ ÀÔ·Â¹Þ¾Æ È¸éÀ¸·Î Ãâ·ÂÇÑ´Ù. ÀÔ·ÂµÈ Å°´Â str¹öÆÛ¿¡ ´©ÀûµÇ¸ç ´©ÀûµÈ ¹®ÀÚ¿À» WM_PAINT¿¡¼ Ãâ·ÂÇϵµ·Ï Çϱâ À§ÇØ ÀÛ¾÷ ¿µ¿ªÀ» ¹«È¿ÈÇÑ´Ù. ÀÌÀü ÀÔ·ÂµÈ ¹®ÀÚ¿ÀÌ ´©ÀûµÇ¾î °è¼Ó Ãâ·ÂµÇ¹Ç·Î ÀÛ¾÷ ¿µ¿ªÀ» Áö¿ï ÇÊ¿ä°¡ ¾ø¾î bErase´Â FALSE·Î ÁÖ¾ú´Ù. InvalidateRect È£Ãâ¹®À» »èÁ¦Çϸé Å°º¸µå¸¦ ´·¯µµ ȸéÀ¸·Î ¹®ÀÚ¿ÀÌ Ãâ·ÂµÇÁö ¾Ê´Â´Ù. LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; static char str[256]; int len; switch(iMessage) { case WM_CHAR: len = strlen(str); str[len]=(TCHAR)wParam; str[len+1]=0; InvalidateRect(hWnd,NULL,FALSE); return 0; case WM_PAINT: hdc=BeginPaint(hWnd,&ps); TextOut(hdc,100,100,str,strlen(str)); EndPaint(hWnd,&ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } ½ÇÇà °á°ú´Â ´ÙÀ½°ú °°´Ù. Å°º¸µå¸¦ ´©¸¦ ¶§¸¶´Ù ÀÛ¾÷ ¿µ¿ªÀÌ ¹«È¿ÈµÇ¸ç ´·¯Áø Å°°¡ ȸéÀ¸·Î Ãâ·ÂµÈ´Ù. ÀÌó¸² ³»ºÎÀûÀÎ º¯È¿¡ ÀÇÇØ È¸éÀÌ ´Ù½Ã ±×·ÁÀú¾ß ÇÒ ¶§ InvalidateRect ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ȸéÀ» ¹«È¿ÈÇØ ÁÖ¾î¾ß ÇÑ´Ù. ´ÙÀ½ ¿¹Á¦´Â ´·¯Áø Å° Çϳª¸¸ Ãâ·ÂÇÑ´Ù. LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; static char ch[2]; switch(iMessage) { case WM_CHAR: ch[0]=(TCHAR)wParam; InvalidateRect(hWnd,NULL,TRUE); return 0; case WM_PAINT: hdc=BeginPaint(hWnd,&ps); TextOut(hdc,100,100,ch,strlen(ch)); EndPaint(hWnd,&ps); return 0; case WM_DESTROY: PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } ¸Å¹ø Å°°¡ ´·¯Áú ¶§¸¶´Ù (100,100)À§Ä¡¿¡ ¹®ÀÚ°¡ Ãâ·ÂµÇ¹Ç·Î ÀÌÀü¿¡ Ãâ·ÂµÈ ¹®ÀÚ¸¦ ¹Ýµå½Ã ȸ鿡¼ »èÁ¦ÇÑ ÈÄ »õ ¹®ÀÚ¸¦ Ãâ·ÂÇØ¾ß ÇÑ´Ù. ±×·¡¼ bErase¸¦ TRUE·Î ¼³Á¤ÇÏ¿© Å°°¡ ÀÔ·ÂµÉ ¶§¸¶´Ù ¹è°æÀ» Áö¿ìµµ·Ï ÇÏ¿´´Ù. ¸¸¾à bErase¸¦ FALSE·Î ÇÏ¿© ¹è°æÀ» Áö¿ìÁö ¾ÊÀ¸¸é ÀÌÀü¿¡ Ãâ·ÂµÈ ¹®ÀÚ°¡ Áö¿öÁöÁö ¾Ê¾Æ µÎ °³ÀÇ ¹®ÀÚ°¡ °ãÃļ ³ªÅ¸³¯ ¼öµµ ÀÖ´Ù. ´ÙÀ½Àº bErase¸¦ FALSE·Î ¼³Á¤ÇÏ°í W¿Í J¸¦ ¿¬¼ÓÇؼ ´·¯º» °ÍÀÌ´Ù. ¸ÕÀú Ãâ·ÂµÈ W°¡ Áö¿öÁöÁö ¾Ê¾Ò±â ¶§¹®¿¡ J¿Í W°¡ °ãÃÄ º¸ÀÌ°Ô µÈ´Ù. bErase¸¦ TRUE·Î ¹Ù²Ù¸é ÀÌ ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â InvalidateRect ÇÔ¼öÀÇ µÎ¹ø° ÀμöÀÎ lpRect¸¦ Å×½ºÆ®ÇÏ´Â ¿¹Á¦ÀÌ´Ù. ŸÀ̸Ӹ¦ ¼³Ä¡ÇÏ°í 1ÃÊ¿¡ Çѹø¾¿ ½Ã°£À» ÀÛ¾÷ ¿µ¿ª¿¡ Ãâ·ÂÇϵµ·Ï ÇÏ¿´´Ù. ¹è°æ¿¡´Â ¹ÙµÏÆÇ ¸ð¾çÀÇ º¹ÀâÇÑ ±×¸²ÀÌ ±×·ÁÁ® ÀÖ´Ù. LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam) { HDC hdc; PAINTSTRUCT ps; static HANDLE hTimer; SYSTEMTIME st; static char sTime[128]; RECT rt; int x,y; switch(iMessage) { case WM_CREATE: hTimer=(HANDLE)SetTimer(hWnd,1,1000,NULL); SendMessage(hWnd, WM_TIMER, 1, 0); return 0; case WM_TIMER: GetLocalTime(&st); wsprintf(sTime,"Áö±Ý ½Ã°£Àº %d:%d:%dÀÔ´Ï´Ù", st.wHour,st.wMinute,st.wSecond); SetRect(&rt,100,100,400,120); InvalidateRect(hWnd,&rt,TRUE); break; return 0; case WM_PAINT: hdc=BeginPaint(hWnd,&ps); for (x=0;x<800;x+=5) { MoveToEx(hdc,x,0,NULL); LineTo(hdc,x,600); } for (y=0;y<600;y+=5) { MoveToEx(hdc,0,y,NULL); LineTo(hdc,800,y); } TextOut(hdc,100,100,sTime,strlen(sTime)); EndPaint(hWnd,&ps); return 0; case WM_DESTROY: KillTimer(hWnd,1); PostQuitMessage(0); return 0; } return(DefWindowProc(hWnd,iMessage,wParam,lParam)); } WM_TIMER ¸Þ½ÃÁö¿¡¼ InvalidateRect ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ÀÛ¾÷ ¿µ¿ªÀ» ¹«È¿ÈÇ쵂 ½Ã°£ÀÌ Ãâ·ÂµÇ´Â ºÎºÐ¸¸ ¹«È¿ÈÇÔÀ¸·Î½á ¹è°æÀÇ ¹ÙµÏÆÇ ¸ð¾çÀº ´Ù½Ã ±×·ÁÁöÁö ¾Êµµ·Ï Çß´Ù. ½ÇÇàÁßÀÇ ¸ð½ÀÀº ´ÙÀ½°ú °°´Ù. ¸¸¾à InvalidateRect(hWnd,NULL,TRUE); ·Î ÇÔ¼ö¸¦ È£ÃâÇϸé ÀÛ¾÷ ¿µ¿ª Àüü°¡ ¹«È¿ÈµÇ°í ¹ÙµÏÆÇ ¹«´Ì Àüü°¡ ´Ù½Ã Áö¿öÁ³´Ù°¡ ±×·ÁÁö¹Ç·Î ȸ鿡 ±ô¹ÚÀÓÀÌ º¸ÀÌ°Ô µÈ´Ù. ¹è°æ¿¡ º¹ÀâÇÑ ±×¸²ÀÌ ÀÖ°í ȸéÀÇ ÀϺθ¸ º¯°æÇØ¾ß ÇÒ °æ¿ì´Â lpRect¿¡ ÇÊ¿äÇÑ ÃÖ¼ÒÇÑÀÇ ¿µ¿ª¸¸ °è»êÇÏ¿© ²À ÇÊ¿äÇÑ ºÎºÐ¸¸ ´Ù½Ã ±×¸®µµ·Ï ÇØ ÁÖ¾î¾ß ÇÑ´Ù. |
Âü°íÇÔ¼ö | InvalidateRgn, ValidateRect |
Ç÷¿Æû | 95ÀÌ»ó |
ÂüÁ¶ | ¹«È¿ ¿µ¿ª¿¡ ´ëÇؼ´Â 4Àå, 12ÀåÀ» Âü°íÇÑ´Ù. |
written by http://www.winapi.co.kr
|