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

// atlgdi.h¾È

typedef CEnhMetaFileT<false>  CEnhMetaFileHandle;

typedef CEnhMetaFileT<true>   CEnhMetaFile;

                      


±×¸®°í WTL´Â È®Àå ¸ÞŸÆÄÀÏ¿ë µð¹ÙÀ̽º ÄÜÅØ½ºÆ®¸¦CEnhMetaFileDCŬ·¡½º, È®Àå ¸ÞŸÆÄÀÏ Á¤º¸¸¦ CEnhMetaFileInfo Ŭ·¡½º¿¡¼­ ĸ½¶È­Çϰí ÀÖ½À´Ï´Ù.

¡¡ÀÌÇÏ¿¡ ³ªÅ¸³»´Â °ÍÀº WTLÀÇ È®Àå ¸ÞŸÆÄÀÏ ¼­Æ÷Æ® Ŭ·¡½º¸¦ »ç¿ëÇØ, È®Àå ¸ÞŸÆÄÀÏÀ» ÀÛ¼º  ¹¦È­ ÇÏ´Â ¿¹ÀÔ´Ï´Ù.

 

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

void OnPaint(HDC /*hDC*/){

    CPaintDC dc(m_hWnd);

 

    CEnhMetaFile emf(::GetEnhMetaFile(_T("test.emf")));

    CRect rect;

    GetClientRect(rect);

 

    // È®Àå ¸ÞŸÆÄÀÏÀ» ¹¦È­

    dc.PlayMetaFile(emf, rect);

}

 

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

LRESULT OnCreate(LPCREATESTRUCT lpcs){

    // È®Àå ¸ÞŸÆÄÀÏÀ» ÀÛ¼º

    CEnhMetaFileDC dc(NULL, _T("test.emf"), NULL, NULL);

 

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

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

 

    return 0;

}

                      


¡¡ÀÌ ¿¹¿¡¼­´Â  ¿ì¼±WM_CREATE¸Þ¼¼Áö Çڵ鷯·Î °æÇâ Æú´õ¿¡ È®Àå ¸ÞŸÆÄÀÏÀ» ÀÛ¼ºÇÕ´Ï´Ù. À̹ø »ç¿ëÇÑCEnhMetaFileDCŬ·¡½ºÀÇ Àμö ÀÖ¾î constructorÀº  ³»ºÎ¿¡¼­Win32APIÀÇCreateEnhMetaFile()¸¦ È£ÃâÇÕ´Ï´Ù¸¸  µðÆúÆ® constructor À» »ç¿ëÇßÀ» °æ¿ì´Â ±»ÀÌ È£ÃâÇÏÁö ¾Ê½À´Ï´Ù.  ±× °æ¿ì´Â CEnhMetaFileDCŬ·¡½ºÀÇ ¸â¹ö ÇÔ¼öÀÎ Create()À» È£ÃâÇÏ´Â °ÍÀ¸·Î È®Àå ¸ÞŸÆÄÀÏÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.  È®Àå ¸ÞŸÆÄÀÏÀ» ÀÛ¼ºÇÑ µÚ´Â  µ¿½Ã¿¡ ¾òÀ» ¼ö ÀÖ´Â È®Àå ¸ÞŸÆÄÀÏ¿ë µð¹ÙÀ̽º ÄÁÅØ½ºÆ®¸¦ »ç¿ëÇØ  µµÇüÀ» ¹¦È­ ÇÕ´Ï´Ù.

µ¡ºÙ¿© CEnhMetaFileDCŬ·¡½ºÀÇ ¼Ò¸êÀÚ¿¡¼­´ÂCloseEnhMetaFile()ÀÌ ºÒ·Á °¡±â ¶§¹®¿¡, È®Àå ¸ÞŸÆÄÀÏ¿ë µð¹ÙÀ̽º ÄÜÅØ½ºÆ®¸¦ ¸í½ÃÀûÀ¸·Î ´ÝÀ» ÇÊ¿ä´Â ¾ø½À´Ï´Ù.  Close()¸¦ È£ÃâÇÏ¸é ¸í½ÃÀûÀ¸·Î ´ÝÀ» ¼ö°¡ ÀÖ¾î ¹Ýȯ°ªÀ¸·Î¼­ È®Àå ¸ÞŸÆÄÀÏÀÇ ÇÚµéÀ» ÃëµæÇÒ ¼ö ÀÖ½À´Ï´Ù.

¡¡WM_PAINT¸Þ¼¼Áö Çڵ鷯¿¡¼­´Â  Win32APIÀÇ GetEnhMetaFile()¸¦ È£ÃâÇØ  °æÇâ Æú´õ·ÎºÎÅÍ ¹æ±Ý Àü ÀÛ¼ºÇÑ È®Àå ¸ÞŸÆÄÀÏÀ» Àоîµé¿©  PlayMetaFile() ±×¸®°í È®Àå ¸ÞŸÆÄÀÏÀÇ ³»¿ëÀ» ¹¦È­ ÇÕ´Ï´Ù.