¶ó.´ÙÁß ¸ð´ÏÅÍ Ãâ·Â

À©µµ¿ì°¡ µÎ °³ÀÇ ¸ð´ÏÅÍ Áß°£¿¡ °ÉÃÄ ÀÖ´Â »óȲÀÌ´õ¶óµµ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ±×¸®±â Äڵ尡 Ưº°ÇÑ ¿µÇâÀ» ¹ÞÀ» ÇÊ¿ä´Â ¾ø´Ù. WM_PAINT ¸Þ½ÃÁö¿¡¼­ ÇϳªÀÇ DC¸¦ ¹ß±Þ¹Þ°í ÀÌ DCÀÇ Ç¥¸é¿¡ ±×¸®±â¸¸ ÇÏ¸é ³ª¸ÓÁö ÀÛ¾÷Àº ½Ã½ºÅÛÀÌ ¾Ë¾Æ¼­ ÇØ ÁØ´Ù. ±×¸®±â Ç¥¸éÀÌ µÎ ¸ð´ÏÅÍ¿¡ ÀÖ´õ¶óµµ ÀÀ¿ë ÇÁ·Î±×·¥Àº ÇϳªÀÇ ³í¸®ÀûÀÎ À©µµ¿ì¿¡ ±×¸®±â¸¸ ÇÏ¸é µÇ´Â °ÍÀÌ´Ù.

µÎ ¸ð´ÏÅÍ¿¡ °ÉÃÄ ÀÖ´Â À©µµ¿ìÀÇ °æ¿ì ±×¸®±â ¼Óµµ°¡ Á¶±Ý ÀúÇϵDZâ´Â ÇϰÚÁö¸¸ ±×°Íµµ ¹«½ÃÇÒ¸¸ÇÑ ¼öÁØÀÌ´Ù. ´Ù¸¸ µÎ ¸ð´ÏÅÍÀÇ »ö»ó Æ÷¸ËÀÌ ´Ù¸¥ °æ¿ì´Â ¼Óµµ ÀúÇϰ¡ ´Ù¼Ò ½ÉÇÒ ¼öµµ ÀÖ°í ½Ã½ºÅÛÀÇ Ãâ·ÂÀÌ ÃÖÀûÀÌ ¾Æ´Ò ¼öµµ ÀÖ´Ù. ¿¹¸¦ µé¾î ÁÖ ¸ð´ÏÅÍ´Â 24ºñÆ® »ö»óÀ¸·Î ¸ÂÃß¾îÁ® ÀÖ°í Ãß°¡ ¸ð´ÏÅÍ´Â16ºñÆ® »ö»óÀ¸·Î ¼³Á¤µÇ¾î ÀÖÀ» °æ¿ì ½Ã½ºÅÛÀÌ ÃÖÀûÀÇ Ãâ·Â °á°ú¸¦ ¸ÂÃ߱Ⱑ ´Ù¼Ò ¾î·Á¿ï °ÍÀÌ´Ù. À̶§µµ ½Ã½ºÅÛÀº ÃÖ´ëÇÑ ºñ½ÁÇÑ Ãâ·ÂÀ» ÇÏÁö¸¸ ÃÖÀûÀÇ ¼º´É°ú´Â ´Ù¼Ò °Å¸®°¡ ¸Ö ¼öµµ ÀÖ´Ù.

±×·¡ÇÈ ÆíÁý ÇÁ·Î±×·¥À̳ª ÀüÀÚ ÃâÆÇ ÇÁ·Î±×·¥ µî Ãâ·Â °á°ú°¡ ¾ÆÁÖ Áß¿äÇÑ °æ¿ì³ª CAD°°ÀÌ ±×¸®±â ¼Óµµ°¡ ¾ÆÁÖ Áß¿äÇÑ °æ¿ì´Â ÀÌ·± »óȲÀ» Á÷Á¢ ó¸®ÇÒ ¼öµµ ÀÖ´Ù. ´ÙÀ½ ¿¹Á¦´Â ´ÙÁß ¸ð´ÏÅÍ »óȲ¿¡¼­ °¢ ¸ð´ÏÅÍÀÇ »ö»ó Æ÷¸Ë¿¡ µû¶ó ÃÖÀûÀÇ Ãâ·ÂÀ» ¸¸µé¾î³»´Â ¿¹¸¦ º¸¿©ÁØ´Ù.

 

BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor,HDC hdcMonitor,LPRECT lprcMonitor,LPARAM dwData)

{

   HBRUSH Brush,OldBrush;

   HPEN Pen,OldPen;

   RECT rtRect,rtPaint;

 

   if (GetDeviceCaps(hdcMonitor,BITSPIXEL) == 16) {

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

      Pen=CreatePen(PS_SOLID,1,RGB(0,0,255));

   } else {

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

      Pen=CreatePen(PS_SOLID,1,RGB(255,0,0));

   }

   SetRect(&rtRect,10,50,1000,150);

   IntersectRect(&rtPaint,&rtRect,lprcMonitor);

   OldBrush=(HBRUSH)SelectObject(hdcMonitor,Brush);

   OldPen=(HPEN)SelectObject(hdcMonitor,Pen);

   Rectangle(hdcMonitor,rtPaint.left,rtPaint.top,rtPaint.right,rtPaint.bottom);

   DeleteObject(SelectObject(hdcMonitor,OldBrush));

   DeleteObject(SelectObject(hdcMonitor,OldPen));

   return TRUE;

}

 

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

{

   HDC hdc;

   PAINTSTRUCT ps;

   TCHAR Mes[]="16ºñÆ® »ö»ó ¸ð´ÏÅÍ¿¡¼­´Â ÆÄ¶õ»ö, ±×¿ÜÀÇ ¸ð´ÏÅÍ¿¡¼­´Â »¡°£»ö";

 

   switch(iMessage) {

   case WM_PAINT:

      hdc=BeginPaint(hWnd, &ps);

      TextOut(hdc,10,10,Mes,lstrlen(Mes));

      EnumDisplayMonitors(hdc,NULL,MonitorEnumProc,NULL);

      EndPaint(hWnd, &ps);

      return 0;

   case WM_DESTROY:

      PostQuitMessage(0);

      return 0;

   }

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

}

 

WM_PAINT¿¡¼­´Â °£´ÜÇÑ ¸Þ½ÃÁö Ãâ·Â ¿Ü¿¡ Ưº°ÇÑ ±×¸®±â Äڵ带 °¡ÁöÁö ¾ÊÀ¸¸ç ¸ð´ÏÅÍ ¿­°Å ÇÔ¼ö¸¸ È£ÃâÇÑ´Ù. À̶§ EnumDisplayMonitors ÇÔ¼öÀÇ Ã¹¹øÂ° Àμö·Î hdc¸¦ ³Ñ°Ü ÁÖ¾î ÀÌ DCÀÇ ¿µ¿ª¿¡ °ÉÃÄ ÀÖ´Â ¸ð´ÏÅÍ¿¡ ´ëÇØ¼­¸¸ Á¶»çÇϵµ·Ï Çß´Ù. ±×¸®±â¸¦ À§ÇØ ¸ð´ÏÅÍ ¿­°Å¸¦ ÇÏ´Â °ÍÀ̹ǷΠhdc¿Í °ãÃÄ ÀÖÁö ¾ÊÀº ¸ð´ÏÅÍ¿¡ ´ëÇØ¼­´Â ¿­°ÅÇÒ Çʿ䰡 ¾ø´Ù.

Äݹé ÇÔ¼ö´Â Àμö·Î Àü´ÞµÈ hdcMonitor DC¿¡ ±×¸®±â¸¦ Ç쵂 ÀÌ DCÀÇ »ö»ó Æ÷¸ËÀÌ 16ºñÆ®ÀÌ¸é ÆÄ¶õ»öÀ¸·Î, ±× ¿ÜÀÇ »ö»ó Æ÷¸ËÀÌ¸é »¡°£»öÀ¸·Î ±×¸®±â¸¦ ÇÑ´Ù. lprcMonitor Àμö·Î´Â hdc¿Í ±³Â÷µÇ´Â ¸ð´ÏÅÍ ¿µ¿ªÀÇ ÁÂÇ¥°¡ Àü´ÞµÇ¹Ç·Î ÀÌ ¿µ¿ª¾È¿¡¸¸ ±×¸®±â¸¦ ÇÏ¸é µÈ´Ù. ½ÇÇàÇØ º¸¸é µÎ ¸ð´ÏÅÍÀÇ Áß°£¿¡ °ÉÃÆÀ» ¶§ 16ºñÆ® ¸ð´ÏÅÍ¿¡¼­´Â ÆÄ¶õ»ö, 24ºñÆ® ¸ð´ÏÅÍ¿¡¼­´Â »¡°£»ö »ç°¢ÇüÀÌ ±×·ÁÁú °ÍÀÌ´Ù.

ÀÌ ¿¹Á¦´Â »ö»ó Æ÷¸ËÀÌ ´Ù¸¥ ¸ð´ÏÅÍÀÇ °æ°è¿¡ ÀÖÀ» ¶§ °¢ ¿µ¿ª¿¡ ´ëÇØ ´Ù¸¥ ¹æ½ÄÀ¸·Î ±×¸± ¼öµµ ÀÖ´Ù´Â °ÍÀ» º¸¿©ÁÙ »Ó ½Ç¿ëÀûÀÎ °¡Ä¡´Â ¾ø´Ù. ÇÏÁö¸¸ ¾Æ¹«¸® º¹ÀâÇÑ Ãâ·ÂÀÌ¶óµµ ±âº» ¿ø¸®´Â ÀÌ ¿¹Á¦¿Í µ¿ÀÏÇÏ´Ù. WM_PAINT¿¡¼­´Â ¸ð´ÏÅÍ ¿­°Å¸¸ ÇÏ°í ½ÇÁ¦ ±×¸®±â ÄÚµå´Â ¸ð´ÏÅÍ ¿­°Å ÇÔ¼ö·Î Àü´ÞµÇ´Â DCÀÇ lprcMonitor ¿µ¿ªÀ» ÂüÁ¶ÇÏ¸é µÈ´Ù.