°¡.¸ÞŸ ·¹ÄÚµå ¿­°Å

¾Õ¿¡¼­ ¸ÞŸ ÆÄÀÏÀÇ ±¸Á¶¿¡ ´ëÇØ °£·«ÇÏ°Ô ¾Ë¾Æ º¸¾Ò´Âµ¥ ´Ù½Ã Çѹø ´õ Á¤¸®ÇÏÀÚ¸é ¸ÞŸ ÆÄÀÏÀº ´Ü¼øÇÑ GDI ÇÔ¼ö È£ÃâÀÇ ÁýÇÕÀÏ »ÓÀÌ´Ù. Áï LineTo, SelectObject, CreatePen µûÀ§ÀÇ ÇÔ¼ö È£Ãâ¹®ÀÌ ºÎȣȭµÇ¾î ÀúÀåµÇ¾î ÀÖ´Â °ÍÀÌ ¸ÞŸ ÆÄÀÏÀÌ´Ù. ±×·¸´Ù¸é ¸ÞŸ ÆÄÀÏÀ» Àоî Çؼ®À» ÇØ º¸¸é ¾î¶² ÇÔ¼öµéÀÌ È£ÃâµÇ´ÂÁö¸¦ ¿ªÀ¸·Î ¾Ë¾Æ³¾ ¼öµµ ÀÖ´Ù´Â ¾ê±âÀε¥ °ú¿¬ ±×·¸´Ù. ±×·¯³ª ÀÏÀÏÀÌ ºÎȣȭµÈ GDI ÇÔ¼ö È£Ãâ¹®À» ÀÏÀÏÀÌ Çص¶Çس½´Ù´Â °ÍÀº ¹«Ã´ ¹ø°Å·Ó°í ±ÍÂúÀº ÀÛ¾÷Àε¥ ´ÙÀ½ ÇÔ¼ö¸¦ »ç¿ëÇÏ¸é ¸ÞŸ ÆÄÀÏ¿¡ Æ÷ÇÔµÈ °¢°¢ÀÇ ¸ÞŸ ·¹Äڵ带 ¼ø¼­´ë·Î ¾òÀ» ¼ö ÀÖ´Ù.

BOOL EnumEnhMetaFile(HDC hdc, HENHMETAFILE hemf, ENHMFENUMPROC lpEnhMetaFunc, LPVOID lpData, CONST RECT *lpRect);

ÀÌ ÇÔ¼ö´Â ¸ÞŸ ÆÄÀÏ¿¡ Æ÷ÇÔµÈ ¸ÞŸ ·¹Äڵ带 ¼ø¼­´ë·Î ¿­°ÅÇÏ¿© Äݹé ÇÔ¼ö·Î Àü´ÞÇØ ÁØ´Ù. ù¹ø° Àμö hdc´Â ¸ÞŸ ·¹Äڵ尡 ¿­°ÅµÉ DCÀÇ ÇÚµéÀÌ¸ç ¸¶Áö¸· Àμö lpRect´Â ¸ÞŸ ÆÄÀÏÀ» Ãâ·ÂÇÒ »ç°¢ ¿µ¿ª¿¡ ´ëÇÑ ³í¸®ÀûÀÎ ÁÂÇ¥ÀÌ´Ù. ¸ÞŸ´Â Å©±â º¯°æÀÌ °¡´ÉÇÏ°í ¸ÊÇÎ ¸ðµå³ª ÁÂÇ¥ º¯È¯ ü°èÀÇ ¿µÇâÀ» ¹Þ±â ¶§¹®¿¡ ¿­°ÅÁß¿¡ ¸ÞŸ ·¹Äڵ带 Ãâ·ÂÇØ º¸·Á¸é ÀÌ·± °ªµéÀ» ÀÐÀ» ¼ö ÀÖ´Â DCÀÇ ÇÚµé°ú Ãâ·Â ¿µ¿ªÀ» ÁöÁ¤ÇØ ÁÖ¾î¾ß ÇÑ´Ù. ±×·¯³ª ¸¸¾à ¸ÞŸ ·¹Äڵ带 Ãâ·ÂÇÏÁö ¾Ê°í ¼ø¼öÇÏ°Ô ¸ÞŸ ·¹Äڵ常 º¸°í ½Í´Ù¸é hdc¿Í lpRect´Â ÁöÁ¤ÇÏÁö ¾Ê¾Æµµ »ó°ü¾ø´Ù. hdc´Â ±×´ë·Î Äݹé ÇÔ¼ö·Î Àü´ÞµÇ¸ç lpRect´Â Çì´õ ·¹Äڵ忡 Æ÷ÇԵǴµ¥ ÀÌ °ªÀº PlayEnhMetaRecord ÇÔ¼ö¿¡ ÀÇÇØ ¸ÞŸ ·¹Äڵ带 Ãâ·ÂÇÒ ¶§ »ç¿ëµÈ´Ù.
µÎ¹ø° Àμö´Â µÎ¸»ÇÒ ÇÊ¿ä¾øÀÌ ¿­°Å ´ë»óÀÌ µÇ´Â ¸ÞŸ ÆÄÀÏÀÌ¸ç ¼¼¹ø° Àμö´Â ¿­°ÅÁß¿¡ È£ÃâµÉ Äݹé ÇÔ¼öÀÌ´Ù. ³×¹ø° Àμö lpData´Â Äݹé ÇÔ¼ö·Î Àü´ÞµÉ ¿É¼Ç µ¥ÀÌÅÍÀÌµÇ ÇÊ¿äÇÏÁö ¾ÊÀ¸¸é NULL·Î ÁöÁ¤ÇÏ¸é µÈ´Ù. Äݹé ÇÔ¼ö´Â ´ÙÀ½°ú °°Àº ¿øÇüÀ» °¡Áö¸ç ¸ÞŸ ÆÄÀϳ»ÀÇ ¸ðµç ·¹Äڵ带 Àü´Þ¹Þ´Â´Ù. ÇÔ¼öÀÇ À̸§Àº ¹°·Ð ¿øÇϴ´ë·Î º¯°æÇÒ ¼ö ÀÖ´Ù.

int CALLBACK EnhMetaFileProc(HDC hDC, HANDLETABLE *lpHTable, CONST ENHMETARECORD *lpEMFR, int nObj, LPARAM lpData);

hDC, lpData´Â EnumEnhMetaFileÇÔ¼ö·ÎºÎÅÍ Àü´Þ¹ÞÀº °ÍÀÌ°í ³ª¸ÓÁö ¼¼ Àμö´Â ¸ÞŸ ·¹Äڵ忡 ´ëÇÑ Á¤º¸¸¦ °¡Áø´Ù. lpHTableÀº ¸ÞŸ ÆÄÀϳ»ÀÇ ±×·¡ÇÈ ¿ÀºêÁ§Æ®¿¡ ´ëÇÑ ÇÚµé ¹è¿­À̸ç nObj´Â ÀÌ ¹è¿­ÀÇ Å©±âÀÌµÇ ÀÌ ¹è¿­Àº ºÐ¼®¿¡ »ç¿ëµÈ´Ù±âº¸´Ù PlayEnhMetaRecord ÇÔ¼ö·Î Àü´ÞµÇ¾î Àç»ý¿¡ »ç¿ëµÈ´Ù. ¼¼¹ø° Àμö lpEMFRÀÌ ¸ÞŸ ·¹ÄÚµåÀε¥ ÀÌ ·¹ÄÚµå´Â ¾Õ¿¡¼­µµ »ìÆì º¸¾Ò´Ù½ÃÇÇ ´ÙÀ½°ú °°Àº °¡º¯ ±æÀÌÀÇ ±¸Á¶Ã¼ÀÌ´Ù.

typedef struct tagENHMETARECORD { // enmr
DWORD iType;
DWORD nSize;
DWORD dParm[1];
} ENHMETARECORD;

iTypeÀ» ÀÐÀ¸¸é ¾î¶² GDI ÇÔ¼ö È£ÃâÀÎÁö ¾Ë ¼ö ÀÖÀ¸¸ç nSize´Â ¸ÞŸ ·¹ÄÚµåÀÇ Å©±â¸¦ ¹ÙÀÌÆ® ´ÜÀ§·Î Á¶»çÇÒ ¼ö ÀÖ´Ù. ´Ü nSize¿¡´Â iType°ú nSize ÀÚüÀÇ Å©±âµµ Æ÷ÇԵǹǷΠ½ÇÁ¦ ÀμöÀÇ ±æÀÌ´Â ÀÌ °ªÀÌ ÁöÁ¤ÇÏ´Â °ªº¸´Ù 8 ´õ ÀÛ´Ù. dParm ¹è¿­Àº GDI ÇÔ¼öÀÇ Àμö¿¡ ´ëÇÑ Á¤º¸¸¦ °¡Áö°í Àִµ¥ GDI ÇÔ¼öÀÇ Àμö´Â ´ëºÎºÐ Á¤¼öÇüÀ̹ǷΠDWORDÇü¿¡ ´ëÇÑ ¹è¿­·Î Á¤ÀǵǾî ÀÖ´Ù. ÀÌ·¸°Ô Àü´Þ¹Þ´Â ¸ÞŸ ·¹ÄÚµå´Â ÀÓÀÇ´ë·Î ºÐ¼®ÇØ º¼ ¼ö ÀÖÁö¸¸ Á÷Á¢ º¯°æÀº ÇÒ ¼ö ¾øÀ¸¸ç ²À º¯°æÇØ¾ß ÇÑ´Ù¸é »çº»À» ¸¸µç ÈÄ º¯°æÇØ¾ß ÇÑ´Ù. ¸ÞŸ ·¹Äڵ带 ´Ü¼øÈ÷ Ãâ·ÂÇØ º¸±â¸¸ ÇÏ·Á¸é ´ÙÀ½ ÇÔ¼ö¸¦ È£ÃâÇÑ´Ù.

BOOL PlayEnhMetaFileRecord(HDC hdc, LPHANDLETABLE lpHandletable, CONST ENHMETARECORD *lpEnhMetaRecord, UINT nHandles);

dc, ÇÚµé Å×ÀÌºí ±×¸®°í ¸ÞŸ ·¹Äڵ带 Àü´ÞÇØ ÁÖ¸é ÀÌ ·¹ÄÚµåÀÇ GDI ÇÔ¼ö È£Ãâ¹®ÀÌ ½ÇÇàµÉ °ÍÀÌ´Ù


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