|
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);
|
|