|
WTL±×·³ GDI¿ÀºêÁ§Æ®ÀÇ ÆæÀ»CPenTÀ̶ó°í ÇÏ´Â ÅÛÇø´ Ŭ·¡½º¿¡¼ ĸ½¶ÈÇϰí ÀÖ½À´Ï´Ù. ÅÛÇø´ Àμö´Âbool°ªÀ¸·Î trueÀÇ °æ¿ì´Â ¼Ò¸êÀÚ·ÎDeleteObject()¸¦ È£ÃâÇØ falseÀÇ °æ¿ì´Â È£ÃâÇÏÁö ¾Ê½À´Ï´Ù. atlgdi.hÇì´õ¿¡¼´Â typedef¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ¼±¾ðµÇ°í ÀÖ½À´Ï´Ù.
|
// atlgdi.h³»
typedef CPenT<false>
CPenHandle;
typedef CPenT<true> CPen;
|
¡¡WTLÀÇCPenŬ·¡½º´Â ,MFCÀÇ µ¿¸íÀÇ Å¬·¡½º¿Í °ÅÀÇ °°Àº ¸â¹ö ÇÔ¼ö¸¦ ÁغñÇØ ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡ ³ªÅ¸³»´Â °ÍÀº CPenŬ·¡½º¸¦ »ç¿ëÇØ Ŭ¶óÀÌ¾ðÆ® ±¸Çü¿¡ Á¢Çϴ Ǫ¸¥ Ÿ¿øÀ» ¹¦È ÇÏ´Â ¿¹ÀÔ´Ï´Ù.

|
// WM_PAINT¸Þ¼¼Áö Çڵ鷯
void OnPaint(HDC /*hDC*/){
CPaintDC
dc(m_hWnd);
// ±½±â2·Î Ǫ¸¥ ½Ç¼±ÀÇ ÆæÀ» ÀÛ¼ºÇØ ¼±ÅÃ
CPen
pen;
pen.CreatePen(PS_SOLID,
2, RGB(0, 0, 255));
HPEN hOldPen
= dc.SelectPen(pen);
// Ŭ¶óÀ̾ðÆ®
±¸ÇüÀ» ÃëµæÇØ Ÿ¿øÀ» ¹¦È
CRect
rect;
GetClientRect(rect);
dc.Ellipse(rect);
// ¿øÀÇ
ÆæÀ» ¼±ÅÃ
dc.SelectPen(hOldPen);
}
|
¡¡ÀÌ ¿¹¿¡¼´Â ¿ì¼± Ææ ¿ÀºêÁ§Æ®¸¦ ÀÛ¼ºÇØ ±×°ÍÀ»SelectPen()·Î ÇöÀçÀÇ ÆæÀ¸·Î¼ ¼±ÅÃÇϰí ÀÖ½À´Ï´Ù. SelectPen()(Àº)´Â Àμö¿¡HPENÇüÅÂÀÇ º¯¼ö¸¦ ¹Þ½À´Ï´Ù¸¸ , CPenTŬ·¡½º´ÂHPENº¯È¯ ¿¬»êÀÚ¸¦ °¡Áö°í ÀÖÀ¸¹Ç·Î ±×´ë·Î °Ç³×ÁÙ ¼ö°¡ ÀÖ½À´Ï´Ù. SelectPen()Àº ÀÌÀüÀÇ Ææ ÇÚµéÀ» µ¹·ÁÁֹǷΠÀ̰ÍÀ»hOldPenÀ̶ó°í ÇÏ´Â º¯¼ö¿¡ º¸Á¸ÇØ µÓ´Ï´Ù.
´ÙÀ½¿¡ ¿øÀ» ¹¦È ÇÕ´Ï´Ù. ±½±â°¡ 2 ·Î Ǫ¸¥ ½Ç¼±ÀÇ ¿øÀÌ ¹¦È µË´Ï´Ù.
¸¶Áö¸·À¸·Î ¹æ±ÝÀü º¸Á¸ÇØ µÐ ¿øÀÇ Ææ Çڵ鿡 µÇµ¹¸®±â À§ÇØ ÀçÂ÷SelectPen()¸¦ È£ÃâÇØ ¿øÀÇ Ææ ÇÚµéÀ» ¼±ÅÃÇÕ´Ï´Ù.
¡¡±×·±µ¥ WTL´Â ½ºÅå Ææµµ ¼Æ÷Æ®Çϰí ÀÖ½À´Ï´Ù. ÀÌÇÏ¿¡ ³ªÅ¸³»´Â °ÍÀº ½ºÅå Ææ¿¡ ÀÇÇØ °ËÀº ½Ç¼±ÀÇ Å¸¿øÀ» ¹¦È ÇÏ´Â ¿¹ÀÔ´Ï´Ù.
|
// WM_PAINT¸Þ¼¼Áö Çڵ鷯
void OnPaint(HDC /*hDC*/){
CPaintDC
dc(m_hWnd);
// ½ºÅå
ÆæÀ» ¼±ÅÃ
HPEN hOldPen
= dc.SelectStockPen(BLACK_PEN);
// Ŭ¶óÀ̾ðÆ®
±¸ÇüÀ» ÃëµæÇØ ,
¿£À» ¹¦È
CRect
rect;
GetClientRect(rect);
dc.Ellipse(rect);
// ¿øÀÇ
ÆæÀ» ¼±ÅÃ
dc.SelectPen(hOldPen);
}
|
±×¸®°í ,atlmisc.hÇì´õ¿¡ Á¤Àǵǰí ÀÖ´ÙAtlGetStockPen()¶ó°í ÇÏ´Â ±Û·Î¹ú ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é ½ºÅå ÆæÀÇ ÇÚµéÀ» ÃëµæÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù.
|
// ½ºÅå ÆæÀÇ ÇÚµéÀ» Ãëµæ
HPEN hStockPen
= AtlGetStockPen(BLACK_PEN);
|
|