3-1-¶ó. DC¸¦ ¾ò´Â ¹æ¹ý

È­¸éÀ¸·Î Ãâ·ÂÀ» Çϱâ À§Çؼ­´Â ¹Ýµå½Ã DC°¡ ÀÖ¾î¾ß Çϸç DC¸¦ ¾ò´Â ¹æ¹ý¿¡´Â µÎ°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù. ±× ù¹ø° ¹æ¹ýÀº ¾ÕÀÇ ¿¹Á¦¿¡¼­ º¸Àδë·Î GetDCÇÔ¼ö¸¦ »ç¿ëÇÏ¿© DC¸¦ ¾ò°í »ç¿ë ÈÄ ReleaseDC·Î ÇØÁ¦ÇØ ÁÖ´Â °ÍÀÌ´Ù.

HDC GetDC(HWND hWnd);
int ReleaseDC(HWND hWnd,HDC hDC);

DC´Â ÁÖ·Î ÇϳªÀÇ À©µµ¿ì¿Í ¿¬°üµÇ´Â Ãâ·ÂÁ¤º¸¸¦ °¡Áø´Ù. ±×·¡¼­ Àμö·Î ¾î¶² À©µµ¿ì¿¡ ´ëÇÑ DC°¡ ÇÊ¿äÇÑ°¡¸¦ ¹àÇôÁÖ¾î¾ß ÇÑ´Ù. GetDC´Â hWnd°¡ °¡¸®Å°´Â À©µµ¿ì¿¡ Àû´çÇÑ DC¸¦ ¸¸µé¾î ±× ÇÚµéÀ» ¹Ý³³ÇÑ´Ù. ¾ÕÀÇ ¿¹Á¦¿¡¼­´Â ÀÌ ÇÚµéÀ» HDCÇüÀÇ hdcº¯¼ö¿¡ ´ëÀÔÇÑ ÈÄ ÀÌ Çڵ鰪À» TextOut ÇÔ¼öÀÇ Ã¹¹ø° Àμö·Î »ç¿ëÇÏ¿´´Ù. GetDC¿¡ ÀÇÇØ ¾ò¾îÁø ÇÚµéÀº »ç¿ë ÈÄ¿¡ ¹Ýµå½Ã ReleaseDC ÇÔ¼ö¿¡ ÀÇÇØ ÇØÁ¦µÇ¾î¾ß ÇÑ´Ù. DCµµ ¸Þ¸ð¸®¸¦ Â÷ÁöÇϹǷΠÇÒ´ç ÈÄ ÇØÁ¦ ¿øÄ¢ÀÌ ¹Ýµå½Ã ÁؼöµÇ¾î¾ß ÇÑ´Ù.

DC¸¦ ¾ò´Â µÎ¹ø° ¹æ¹ýÀº WM_PAINT ¸Þ½ÃÁö ·çƾ¿¡¼­¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù. WM_PAINT ¸Þ½ÃÁö ó¸® ·çƾ¿¡¼­´Â DC ÇÚµéÀ» GetDC·Î ¾òÁö ¾Ê°í BeginPaint ÇÔ¼ö·Î ¾òÀ¸¸ç ÇÚµéÀ» ÇØÁ¦ÇÒ ¶§´Â EndPaint ÇÔ¼ö¸¦ »ç¿ëÇÑ´Ù. GetDC´Â DC ÇÚµéÀ» ¾ò´Â ÀϹÝÀûÀÎ ¹æ¹ýÀ̸ç BeginPaint´Â WM_PAINT ¸Þ½ÃÁö³»¿¡¼­ ±×¸² ±×¸®±â Áغñ¸¦ ÇÏ´Â Á» ´õ Àü¹®ÀûÀÎ ÇÔ¼öÀÌ´Ù.

HDC BeginPaint(HWND hwnd, LPPAINTSTRUCT lpPaint);
BOOL EndPaint(HWND hWnd,CONST PAINTSTRUCT *lpPaint);

BeginPaint ÇÔ¼ö´Â À©µµ¿ì ÇÚµé ¿Ü¿¡µµ ÆäÀÎÆ® Á¤º¸ ±¸Á¶Ã¼¸¦ Àμö·Î ¿ä±¸Çϸç ÀÌ ±¸Á¶Ã¼´Â ±×¸² ±×¸®±â¿¡ ÇÊ¿äÇÑ Á¤º¸¸¦ ´ã´Â´Ù.

typedef struct tagPAINTSTRUCT
{
    HDC         hdc;
    BOOL        fErase;
    RECT        rcPaint;
    BOOL        fRestore;
    BOOL        fIncUpdate;
    BYTE        rgbReserved[16];
} PAINTSTRUCT;

¾ÕÀÇ ¼¼ ¸â¹ö´Â »ç¿ëÀÚ°¡ »ç¿ëÇÏ´Â ¸â¹öÀÌ¸ç ³ª¸ÓÁö ¼¼ ¸â¹ö´Â À©µµ¿ìÁî°¡ ³»ºÎÀûÀ¸·Î »ç¿ëÇϹǷΠ»ç¿ëÀÚ°¡ °Çµå·Á¼­´Â ¾ÈµÈ´Ù. WndProc ¼±µÎ¿¡¼­ PAINTSTRUCTÇüÀÇ ±¸Á¶Ã¼¸¦ Áö¿ª º¯¼ö·Î ¼±¾ðÇÏ°í BeginPaint ÇÔ¼ö¸¦ È£ÃâÇÑ ÈÄ ±× ¸®ÅÏ°ªÀ» hdc¶ó´Â º¯¼ö¿¡ ´ëÀÔ¹Þ¾Æ GDI ÇÔ¼ö¿¡ »ç¿ëÇÏ°í EndPaint·Î ±×¸®±â¸¦ Á¾·áÇÏ¸é µÈ´Ù.


¸ñ·Ï º¸±â  ´ÙÀ½ °­Á            written by http://www.winapi.co.kr