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