WTLÀº GDI¿ÀºêÁ§Æ®ÀÇ ºê·¯½¬¸¦CBrushTÀ̶ó°í ÇÏ´Â ÅÛÇø´ Ŭ·¡½º¿¡¼­ ĸ½¶È­Çϰí ÀÖ½À´Ï´Ù. ÅÛÇø´ Àμö´Âbool°ªÀ¸·Î trueÀÇ °æ¿ì´Â ¼Ò¸êÀÚ·ÎDeleteObject()¸¦ È£ÃâÇØ  falseÀÇ °æ¿ì´Â È£ÃâÇÏÁö ¾Ê½À´Ï´Ù.  atlgdi.hÇì´õ¿¡¼­´Âtypedef¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÇ°í ÀÖ½À´Ï´Ù.

// atlgdi.h³»

typedef CBrushT<false>  CBrushHandle;

typedef CBrushT<true>   CBrush;

                      


¡¡WTLÀÇCBrushŬ·¡½º´Â MFCÀÇ µ¿¸íÀÇ Å¬·¡½º¿Í °ÅÀÇ °°Àº ¸â¹ö ÇÔ¼ö¸¦ ÁغñÇØ ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡ ³ªÅ¸³»´Â °ÍÀº CBrushŬ·¡½º¸¦ »ç¿ëÇØ Ŭ¶óÀÌ¾ðÆ® ±¸Çü¿¡ Á¢Çϴ Ǫ¸¥ °ÝÀÚ ÇØÄ¡ÀÇ Å¸¿øÀ» ¹¦È­ ÇÏ´Â ¿¹ÀÔ´Ï´Ù.

 

// WM_PAINT¸Þ¼¼Áö Çڵ鷯

void OnPaint(HDC /*hDC*/){

    CPaintDC dc(m_hWnd);

 

    // Ǫ¸¥ °ÝÀÚ ÇØÄ¡ÀÇ ºê·¯½¬¸¦ ÀÛ¼ºÇØ  ¼±ÅÃ

    CBrush brush;

    brush.CreateHatchBrush(HS_CROSS, RGB(0, 0, 255));

    HBRUSH hOldBrush = dc.SelectBrush(brush);

 

    // Ŭ¶óÀÌ¾ðÆ® ±¸ÇüÀ» ÃëµæÇØ Ÿ¿øÀ» ¹¦È­

    CRect rect;

    GetClientRect(rect);

    dc.Ellipse(rect);

 

    // ¿øÀÇ ºê·¯½¬¸¦ ¼±ÅÃ

    dc.SelectBrush(hOldBrush);

}

                      


¡¡ÀÌ ¿¹¿¡¼­´Â  ¿ì¼± ºê·¯½¬ ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇØ  ±×°ÍÀ»SelectBrush()·Î ÇöÀçÀÇ ºê·¯½¬·Î¼­ ¼±ÅÃÇϰí ÀÖ½À´Ï´Ù.  SelectBrush()´Â Àμö¿¡HBRUSHÇüÅÂÀÇ º¯¼ö¸¦ ¹Þ½À´Ï´Ù¸¸ , CBrushTŬ·¡½º´Â HBRUSH º¯È¯ ¿¬»êÀÚ¸¦ °¡Áö°í ÀÖÀ¸¹Ç·Î ±×´ë·Î °Ç³×ÁÙ ¼ö°¡ ÀÖ½À´Ï´Ù.  SelectBrush()Àº ÀÌÀüÀÇ ºê·¯½¬ ÇÚµéÀ» µ¹·ÁÁֹǷΠ À̰ÍÀ»hOldBrush À̶ó°í ÇÏ´Â º¯¼ö¿¡ º¸Á¸ÇØ µÓ´Ï´Ù.

´ÙÀ½¿¡  Å¸¿øÀ» ¹¦È­ ÇÕ´Ï´Ù.  Çª¸¥ °ÝÀÚ ÇØÄ¡ÀÇ Å¸¿øÀÌ ¹¦È­ µË´Ï´Ù.

¸¶Áö¸·À¸·Î  ¹æ±ÝÀü º¸Á¸ÇØ µÐ ¿øÀÇ ºê·¯½¬ Çڵ鿡 µÇµ¹¸®±â ¶§¹®¿¡  ÀçÂ÷SelectBrush()¸¦ È£ÃâÇØ ¿øÀÇ ºê·¯½¬ ÇÚµéÀ» ¼±ÅÃÇÕ´Ï´Ù.

¡¡±×·±µ¥ WTL´Â ½ºÅå ºê·¯½¬µµ ¼­Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡ ³ªÅ¸³»´Â °ÍÀº  ½ºÅå ºê·¯½¬¿¡ ÀÇÇØ °Ë°Ô ÀüºÎ Ä¥ÇØÁø Ÿ¿øÀ» ¹¦È­ ÇÏ´Â ¿¹ÀÔ´Ï´Ù.

// WM_PAINT¸Þ¼¼Áö Çڵ鷯

void OnPaint(HDC /*hDC*/){

    CPaintDC dc(m_hWnd);

 

    // ½ºÅå ºê·¯½¬¸¦ ¼±ÅÃ

    HBRUSH hOldBrush = dc.SelectStockBrush(BLACK_BRUSH);

 

    // Ŭ¶óÀÌ¾ðÆ® ±¸ÇüÀ» ÃëµæÇØ , ¿£À» ¹¦È­

    CRect rect;

    GetClientRect(rect);

    dc.Ellipse(rect);

 

    // ¿øÀÇ ºê·¯½¬¸¦ ¼±ÅÃ

    dc.SelectBrush(hOldBrush);

}

                      


±×¸®°í atlmisc.hÇì´õ¿¡ Á¤Àǵǰí ÀÖ´Ù AtlGetStockBrush()¶ó°í ÇÏ´Â ±Û·Î¹ú ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é  ½ºÅå ºê·¯½¬ÀÇ ÇÚµéÀ» ÃëµæÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.

// ½ºÅå ºê·¯½¬ÀÇ ÇÚµéÀ» Ãëµæ

HBRUSH hStockBrush = AtlGetStockBrush(BLACK_BRUSH);