°¡.±ô¹ÚÀÓ ¹®Á¦

À©µµ¿ì¿¡ ¹«¾ùÀΰ¡¸¦ ¹Ýº¹ÀûÀ¸·Î Ãâ·ÂÇÏ·Á¸é ±ô¹ÚÀÓ(Flickering)ÀÌ ¹ß»ýÇÑ´Ù. ƯÈ÷ ¹Ýº¹ÀûÀ¸·Î ±×¸²ÀÌ ±³Ã¼µÇ´Â ¾Ö´Ï¸ÞÀ̼ÇÀ̳ª °ÔÀÓ°°Àº °æ¿ì ±ô¹ÚÀÓÀÌ ¹«Ã´ ½ÉÇѵ¥ ÀÌ·± ±ô¹ÚÀÓÀº ´«À» ÇÇ·ÎÇÏ°Ô ¸¸µé±â ¶§¹®¿¡ ÇÁ·Î±×·¥ÀÇ ÁúÀ» Çö°ÝÇÏ°Ô ¶³¾î¶ß¸°´Ù. ÀÌ·± ÇÁ·Î±×·¥À» ¿À·¡ ¾²´Ù º¸¸é ½ÉÁö¾î ¸Ó¸®±îÁö ¾ÆÆÄ¿Ã Áö°æÀÌ´Ù. ±×·¸´Ù¸é ¿Ö ±ô¹ÚÀÓÀÌ ¹ß»ýÇÏ´ÂÁö ¿øÀÎÀ» ºÐ¼®ÇØ º¸°í ±× ÇØ°áÃ¥À» ¸ð»öÇØ º¸µµ·Ï ÇÏÀÚ.

´ÙÀ½ Bounce ¿¹Á¦´Â ¹è°æ È­¸é¿¡ ¹ÙµÏÆÇ ¸ð¾çÀÇ ¹«´Ì¸¦ ±×·Á µÎ°í ÀÌ ¹«´Ì À§¿¡¼­ °øÀ» À̵¿½ÃŲ´Ù. °øÀº À©µµ¿ìÀÇ º®¿¡ ºÎµúÄ¡¸é ÀԻ簢°ú °°Àº °¢µµ·Î ¹Ý»çµÇ¾î »ç°¢ÀÇ Æó¼âµÈ °ø°£¿¡¼­ ¹Ýº¹ÀûÀÎ ¹Ý»ç ¿îµ¿À» ÇÑ´Ù. °ÔÀÓÀÌµç ¾Ö´Ï¸ÞÀ̼ÇÀ̵ç È­¸é¿¡¼­ ¹«¾ùÀΰ¡ ¿òÁ÷ÀÌ´Â ÇÁ·Î±×·¥À̶ó°í °¡Á¤Çϵµ·Ï ÇÏÀÚ. ¹®Á¦¸¦ Á¤ÇüÈ­Çϱâ À§ÇØ ¸ÞÀÎ À©µµ¿ìÀÇ Å©±â´Â 640*350ÀÇ °íÁ¤ Å©±â¸¦ °®µµ·Ï Çߴµ¥ °¡º¯ Å©±â¶óµµ ÇØ°á ¹æ¹ýÀº ºñ½ÁÇÏ°Ô Àû¿ëÇÒ ¼ö ÀÖ´Ù.

 

#define R 20

int x,y;

int xi,yi;

void OnTimer()

{

RECT crt;

 

GetClientRect(hWndMain,&crt);

if (x <= R || x >= crt.right-R) {

    xi*=-1;

}

if (y <= R || y >= crt.bottom-R) {

    yi*=-1;

}

x+=xi;

y+=yi;

 

InvalidateRect(hWndMain,NULL,TRUE);

}

 

LRESULT CALLBACK WndProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)

{

HDC hdc;

PAINTSTRUCT ps;

HPEN hPen,OldPen;

HBRUSH hBrush,OldBrush;

RECT crt;

int i;

 

switch(iMessage) {

case WM_CREATE:

    x=50;

    y=50;

    xi=4;

    yi=5;

    SetTimer(hWnd,1,25,NULL);

    return 0;

case WM_TIMER:

    OnTimer();

    return 0;

case WM_PAINT:

    hdc=BeginPaint(hWnd, &ps);

    GetClientRect(hWnd,&crt);

    for (i=0;i<crt.right;i+=10) {

       MoveToEx(hdc,i,0,NULL);

       LineTo(hdc,i,crt.bottom);

    }

 

    for (i=0;i<crt.bottom;i+=10) {

       MoveToEx(hdc,0,i,NULL);

       LineTo(hdc,crt.right,i);

    }

 

    hPen=CreatePen(PS_INSIDEFRAME,5,RGB(255,0,0));

    OldPen=(HPEN)SelectObject(hdc,hPen);

    hBrush=CreateSolidBrush(RGB(0,0,255));

    OldBrush=(HBRUSH)SelectObject(hdc,hBrush);

    Ellipse(hdc,x-R,y-R,x+R,y+R);

    DeleteObject(SelectObject(hdc,OldPen));

    DeleteObject(SelectObject(hdc,OldBrush));

    EndPaint(hWnd, &ps);

    return 0;

case WM_DESTROY:

    PostQuitMessage(0);

    KillTimer(hWnd,1);

    return 0;

}

return(DefWindowProc(hWnd,iMessage,wParam,lParam));

}

 

ÄÚµå ÀÚü´Â ¹«Ã´ °£´ÜÇÏ´Ù. ³× °³ÀÇ Àü¿ª º¯¼ö¿Í ÇÑ °³ÀÇ ¸ÅÅ©·Î »ó¼ö°¡ Á¤ÀǵǾî Àִµ¥ x,y´Â °øÀÇ ÇöÀç ÁÂÇ¥À̸ç RÀº °øÀÇ ¹ÝÁö¸§, xi, yi´Â °¢°¢ °øÀÇ ¼öÆò, ¼öÁ÷ À̵¿ ÁõºÐÀÌ´Ù.  °øÀÇ ¹ÝÁö¸§Àº 20À¸·Î Á¤ÀǵǾî ÀÖÀ¸¸ç ÃÖÃÊ °øÀº (50,50)¿¡ À§Ä¡ÇÏ¿© ¸Å 0.025Ãʸ¶´Ù xÂÊÀ¸·Î 4Çȼ¿¾¿ ¿òÁ÷À̸ç yÂÊÀ¸·Î 5Çȼ¿¾¿ ¿òÁ÷ÀδÙ.

WM_CREATE¿¡¼­ ŸÀ̸Ӹ¦ ¼³Ä¡Çϰí OnTimer¿¡¼­ x,yÁÂÇ¥¸¦ xi, yi¸¸Å­ Áõ°¡½ÃŰµÇ º®¿¡ ºÎµúÄ¡¸é xi, yiÀÇ ºÎÈ£¸¦ ¹Ù²Ù¾îÁØ´Ù. Áï ¾Æ·¡·Î ³»·Á°¡´Ù°¡ ¹Ù´Ú¿¡ ´êÀ¸¸é ´Ù½Ã À§·Î ¿Ã¶ó°¡¸ç ¿À¸¥ÂÊ º®¿¡ ºÎµúÈ÷¸é ¿ÞÂÊÀ¸·Î À̵¿ÇÑ´Ù. OnPaint¿¡¼­´Â ¹ÙµÏÆÇÀÇ °ÝÀÚ ¹«´Ì¸¦ Ãâ·ÂÇϰí x,yÁÂÇ¥¿¡ °øÀ» Ãâ·ÂÇÏ¿´´Ù. ½ÇÇà ¸ð½ÀÀº ´ÙÀ½°ú °°´Ù.

½ÇÁ¦·Î ½ÇÇàÇØ º¸¸é °øÀÌ ¿òÁ÷À̱â´Â ÇÏÁö¸¸ È­¸é ±ô¹ÚÀÓÀÌ ¾ÆÁÖ ½ÉÇÏ°Ô ´À²¸Áú °ÍÀ̸ç ÄÄÇ»ÅͰ¡ ´À¸®¸é ´À¸±¼ö·Ï ±ô¹ÚÀÓÀÌ ´õ¿í ½ÉÇØÁø´Ù. ÄÄÇ»ÅͰ¡ ¾ÆÁÖ ºü¸£´Ù¸é ±ô¹ÚÀÓÀÇ Á¤µµ°¡ ´úÇϰÚÁö¸¸ ±×·¸´Ù°í ÇØ¼­ ±ô¹ÚÀÓÀÌ ¾ø¾îÁö´Â °ÍÀº ¾Æ´Ï¸ç ´Ù¸¸ ±ô¹ÚÀÓÀÇ Á֯ļö¸¸ ³ô¾ÆÁú »ÓÀÌ´Ù. ±×·¸´Ù¸é ¿Ö ÀÌ·± ±ô¹ÚÀÓÀÌ »ý±â´Â °ÍÀϱî? ±× ÀÌÀ¯´Â InvalidateRect ÇÔ¼öÀÇ ¸¶Áö¸· Àμö¿¡ Àִµ¥ ÀÌ °ªÀÌ TRUEÀ̸é È­¸é Àüü¸¦ ´Ù½Ã Áö¿î ÈÄ ±×¸®±â ¶§¹®ÀÌ´Ù.

È­¸éÀ» ´Ù½Ã Áö¿ì¸é WM_ERASEBKGND ¸Þ½ÃÁö°¡ ¹ß»ýÇϸç ÀÌ ¸Þ½ÃÁö¿¡¼­ À©µµ¿ì Ŭ·¡½º¿¡ µî·ÏµÈ ¹è°æ ºê·¯½Ã·Î ÀÛ¾÷¿µ¿ª Àüü¸¦ ¿ÏÀüÈ÷ Áö¿î´Ù. ±×¸®°í WM_PAINT¿¡¼­ ±ú²ýÇÏ°Ô Áö¿öÁø ÀÛ¾÷¿µ¿ª¿¡ °ÝÀÚ¿Í °øÀ» ´Ù½Ã ±×¸®±â ¶§¹®¿¡ ¿ÏÀüÈ÷ Áö¿öÁø »óȲ°ú ±×¸²ÀÌ ±×·ÁÁø »óȲÀÌ ¹Ýº¹ÀûÀ¸·Î ´«¿¡ º¸ÀÌ°Ô µÇ¹Ç·Î ±ô¹ÚÀÓÀÌ ´À²¸Áö´Â °ÍÀÌ´Ù.

°ÝÀÚ°¡ ÃÎÃÎÈ÷ ±×·ÁÁø È­¸é°ú Èò»öÀ¸·Î ±ú²ýÇÏ°Ô Áö¿öÁø È­¸éÀÌ °è¼Ó ±³Ã¼µÇ¹Ç·Î È­¸éÀÌ ¶³¸®´Â °Íó·³ ´À²¸Áø´Ù. À̶§ ±ô¹ÚÀÓÀÇ Á¤µµ´Â È­¸éÀÌ Áö¿öÁø ÈÄ ¾ó¸¶³ª »¡¸® ´Ù½Ã ±×¸®±â¸¦ Çϴ°¡, Áï ºó È­¸éÀÎ »óŰ¡ ¾ó¸¶³ª ¿À·¡ °¡´Â°¡¿¡ µû¶ó ´Þ¶óÁø´Ù. °ÝÀÚ ¹«´Ì¿Í °øÀ» ÃÖ´ëÇÑ »¡¸® ±×¸®¸é ±ô¹ÚÀÓÀÇ Á¤µµ°¡ ´úÇØÁö±â´Â ÇÏÁö¸¸ ±×·¡µµ Èò È­¸éÀÌ ¾Æ¿¹ ¾ø¾îÁöÁö ¾Ê´Â ÇÑ ±ô¹ÚÀÓÀÌ ¾ø¾îÁöÁö´Â ¾Ê´Â´Ù.

±ô¹ÚÀÓÀÇ ¿øÀÎÀÌ È­¸éÀ» Áö¿ì´Â °Í ¶§¹®À̶ó¸é È­¸éÀ» Áö¿ìÁö ¾ÊÀ½À¸·Î½á ±ô¹ÚÀÓÀ» ¾ø¾Ù ¼ö ÀÖÀ» °ÍÀÌ´Ù. °ú¿¬ ±×·±Áö InvalidateRect ÇÔ¼öÀÇ ¸¶Áö¸· Àμö¸¦ FALSE·Î ¹Ù²Û ÈÄ Å×½ºÆ®ÇØ º¸ÀÚ. ¶Ç´Â WM_ERSEBKGND ¸Þ½ÃÁö¸¦ ¸·¾Æ ¹ö¸®µç°¡ ¾Æ´Ï¸é À©µµ¿ì Ŭ·¡½ºÀÇ ¹è°æ ºê·¯½Ã¸¦ NULL·Î ÁöÁ¤ÇØ Á־ µÈ´Ù. °á°ú´Â ´ÙÀ½°ú °°´Ù.

½ÇÁ¦·Î ½ÇÇàÇØ º¸¸é °ú¿¬ È­¸éÀº ÀüÇô ±ô¹ÚÀÌÁö ¾Ê´Â´Ù. ¿ø·¡ ±×·ÁÁ® ÀÖ´ø ±×¸²À» Áö¿ìÁö ¾Ê±â ¶§¹®¿¡ ºó È­¸éÀÌ ´«¿¡ º¸ÀÌÁö ¾ÊÀ¸¹Ç·Î ±ô¹ÚÀÓÀÌ ¾ø´Â °ÍÀÌ´Ù. ±×·¸Áö¸¸ Áö±Ý ÀÌ °á°ú°¡ ¿øÇÏ´Â ¹Ù´Â ¾Æ´Ï´Ù. °øÀÌ ¿òÁ÷À̱â´Â ÇÏÁö¸¸ ÀÜ»óÀÌ Áö¿öÁöÁö ¾Ê±â ¶§¹®¿¡ ¿ø·¡ ±×·ÁÁ® ÀÖ´ø °øÀÌ ±× ÀÚ¸®¿¡ °è¼Ó ³²¾ÆÀÖÀ¸¸ç Àå¸é ÀüȯÀÌ Á¦´ë·Î µÇÁö ¾Ê¾Ò´Ù.

°á±¹ ¾Ö´Ï¸ÞÀ̼ÇÀ» Á¦´ë·Î ó¸®ÇÏ·Á¸é ¿ø·¡ ±×·ÁÁ® ÀÖ´ø ±×¸²À» Áö¿ì°í »õ ±×¸²À» ´Ù½Ã ±×·Á¾ß ÇÑ´Ù. ±×·¡¼­ InvalidateRect ÇÔ¼öÀÇ ¸¶Áö¸· Àμö¸¦ TRUE·Î ÇØ Áְųª ¾Æ´Ï¸é µû·Î ÀÜ»óÀ» Áö¿ö ÁÖ´Â Äڵ带 ÀÛ¼ºÇØ¾ß ÇÑ´Ù. ¾Ö´Ï¸ÞÀ̼ÇÀ» Á¦´ë·Î Çϸ鼭 ±ô¹ÚÀÓÀ» ¾ø¾Ö·Á¸é ¿©·¯ °¡Áö ¹æ¹ýÀ» µ¿¿øÇÒ ¼ö ÀÖ´Ù.

¿ì¼± °¡Àå ½¬¿î ¹æ¹ýÀº ¹«È¿¿µ¿ªÀ» ÃÖ¼ÒÈ­ÇÏ¿© ±ô¹ÚÀÓÀ» °ÅÀÇ ´À³¥ ¼ö ¾øµµ·Ï ¸¸µå´Â °ÍÀÌ´Ù. À§ ¿¹Á¦ÀÇ °æ¿ì ¿òÁ÷ÀÌ´Â ¹°Ã¼´Â °ø »ÓÀ̰í ÀÌ °øÀº ÃÖ´ë 5Çȼ¿ ÀÌ»ó ¿òÁ÷ÀÌÁö ¾ÊÀ¸¹Ç·Î ÇöÀç °øÀÇ À§Ä¡ x,y¿¡¼­ ¹ÝÁö¸§ R°ú ÃÖ´ë À̵¿°Å¸® 5¸¸Å­ÀÇ ¿µ¿ª¸¸ ¹«È¿È­½ÃŲ´Ù. ±×·¯¸é °ø ÁÖº¯¸¸ ´Ù½Ã ±×·ÁÁö°í ³ª¸ÓÁö´Â ±×´ë·Î ÀÖ°Ô µÇ¹Ç·Î ±×¸®´Â ¼Óµµ°¡ »¡¶óÁö°í ±ô¹ÚÀÓÀ» °ÅÀÇ ´À³¥ ¼ö ¾ø°Ô µÈ´Ù. ÀÌ ¹æ¹ýÀº ¼Óµµ°¡ ¾ÆÁÖ ºü¸¥ ÀåÁ¡ÀÌ ÀÖÀ¸¸ç ½ÇÁ¦·Î °ÅÀÇ ±ô¹ÚÀÓÀ» ´À³¥ ¼ö ¾øÀ» Á¤µµ·Î È¿À²ÀÌ ÁÁ±â´Â ÇÏ´Ù. ÇÏÁö¸¸ ¾Ö´Ï¸ÞÀÌ¼Ç ¿µ¿ªÀÌ Á¼¾Æ¾ß ÇÑ´Ù´Â Á¦¾àÀÌ ÀÖ¾î ÀϹÝÀûÀÎ ÇØ¹ýÀ̶ó ÇÒ ¼ö ¾ø´Ù.

µÎ¹øÂ° ¹æ¹ýÀº ¿ø·¡ ±×¸²À» Áö¿ìÁö´Â ¾ÊµÇ »õ·Î ±×·ÁÁö´Â ±×¸²À¸·Î µ¤¾î ¾²´Â °ÍÀÌ´Ù. ±×·¯¸é Àû¾îµµ ºó È­¸éÀÌ º¸ÀÌÁö´Â ¾Ê±â ¶§¹®¿¡ ±ô¹ÚÀÓÀº ´«¿¡ º¸ÀÌÁö ¾Ê´Â´Ù. ¿¹¸¦ µé¾î Èò ¹ÙÅÁ¿¡ "ABC" ¹®ÀÚ¿­ÀÌ Ãâ·ÂµÇ¾î ÀÖ´Â »óȲ¿¡¼­ "de"·Î ±³Ã¼ÇÑ´Ù°í ÇØ º¸ÀÚ. À̶§ ÀÌÀü ¹®ÀÚ¸¦ Áö¿ìÁö ¾Ê°í "de"¸¸ Ãâ·ÂÇϸé "deC"¶ó°í Ãâ·ÂµÉ °ÍÀÌ´Ù. À̶§ "de" µÚ¿¡ °ø¹éÀ» ³Ö¾î "de    "¸¦ Ãâ·ÂÇϸé ÀÌÀü ¹®ÀÚ¸¦ ¿ÏÀüÈ÷ ±ò²ûÇÏ°Ô µ¤¾î ¹ö¸± ¼ö ÀÖ´Ù. ÀÌ ¹æ¹ýÀº ¹è°æ°ú ±×·ÁÁö´Â ±×¸²ÀÌ ´Ü¼øÇÒ ¶§¸¸ Àû¿ëÇÒ ¼ö ÀÖÀ¸¸ç À§ ¿¹Á¦´Â °ÝÀÚ°¡ Àֱ⠶§¹®¿¡ Àû¿ëÇÏ±â ¾î·Æ´Ù.

À̿ܿ¡ ±ô¹ÚÀÓÀ» ÃÖ¼ÒÈ­ÇÒ ¼ö ÀÖ´Â ¿©·¯ °¡Áö ¹æ¹ýµéÀÌ Àִµ¥ ÇÁ·Î±×·¥ÀÇ »óȲ¿¡ µû¶ó Àû¿ëÇÒ ¼ö ÀÖ´Â ±â¹ý¿¡ Á¦¾àÀÌ ¾ÆÁÖ ¸¹´Ù. ¿òÁ÷ÀÌ´Â ¹°Ã¼°¡ ¸¹°Å³ª ¼­·Î °ãÄ¡Áö ¾Êµµ·Ï ÇØ¾ß ÇÑ´Ù¸é ÀÌ·± °£´ÜÇÑ ¹æ¹ýµéÀ» ¾²±â´Â ¾î·Æ´Ù. ´õ±¸³ª °ÔÀÓ°°Àº º¹ÀâÇÑ ÇÁ·Î±×·¥Àº ¹°Ã¼°¡ ½º½º·Î ¾Ö´Ï¸ÞÀ̼DZîÁö µÇ¾î¾ß ÇϹǷΠº¸ÅëÀÇ ¹æ¹ýÀ¸·Î´Â ±ô¹ÚÀÓÀ» Á¦°ÅÇÏ±â ¾î·Æ´Ù. ±ô¹ÚÀÓÀ» ¾ø¾Ö±â ¾î·Á¿î ±Ùº»ÀûÀÎ ÀÌÀ¯´Â ¿ø·¡ ±×¸²À» Áö¿ö¾ß¸¸ »õ·Î¿î ±×¸²À» Ãâ·ÂÇÒ ¼ö Àֱ⠶§¹®ÀÌ´Ù.