À©µµ¿ì°¡ µÎ °³ÀÇ ¸ð´ÏÅÍ Áß°£¿¡ °ÉÃÄ ÀÖ´Â »óȲÀÌ´õ¶óµµ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ±×¸®±â Äڵ尡 Ưº°ÇÑ ¿µÇâÀ» ¹ÞÀ» ÇÊ¿ä´Â ¾ø´Ù. 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 ¿µ¿ªÀ» ÂüÁ¶ÇÏ¸é µÈ´Ù.