³ª. ÇÁ·ÎÁ§Æ®ÀÇ ±¸¼º

ÄÚµå¸íÀ» Á¤ÇßÀ¸¹Ç·Î »õ À̸§À¸·Î ÇÁ·ÎÁ§Æ®¸¦ ´Ù½Ã ¸¸µé¾î º¸µµ·Ï ÇÏÀÚ. ´ç±Ù ÇÁ·ÎÁ§Æ®´Â ÄÁÆ®·Ñ Å×½ºÆ®¿ëÀ¸·Î ¸¸µç ApiEditTest¿Í´Â ±Ùº»ÀûÀ¸·Î ´Ù¸¥µ¥ º¹¼ö °³ÀÇ ¹®¼­¸¦ ¿­¾î¼­ ÆíÁýÇÒ ¼ö ÀÖ´Â MDI(Multiple Document Interface) Çü½ÄÀ̶ó´Â Á¡ÀÌ °¡Àå Å« Â÷ÀÌÁ¡ÀÌ´Ù. MDI ÀÚü´Â ¾î·ÆÁö ¾ÊÁö¸¸ ¿©·¯ À©µµ¿ì°¡ µ¿½Ã¿¡ ¿­¸± ¼ö Àֱ⠶§¹®¿¡ ÀܼÕÀÌ ¸¹ÀÌ °£´Ù. Áö±Ý±îÁö ¸¸µé¾î ¿Â ApiEdit´Â ÆíÁý ÄÁÆ®·ÑÀÌ°í ¿©±â¼­ºÎÅÍ ¸¸µé DangeunÀº ÆíÁý±âÀÌ´Ù. ÇÁ·ÎÁ§Æ®ÀÇ ¼º°ÝÀÌ ¹Ù²î¾úÀ¸¹Ç·Î ÀÌÀü ÇÁ·ÎÁ§Æ®¸¦ º¹»çÇÏÁö ¾Ê°í »õ·Î ÇÁ·ÎÁ§Æ®¸¦ ´Ù½Ã ¸¸µé¾ú´Ù.

ApiEditTest±îÁö´Â ÇÁ·ÎÁ§Æ® Á¦ÀÛ °úÁ¤ ÀüºÎ¸¦ ´Ù ±â·ÏÇÏ°í ½Ç½ÀÀ» À¯µµÇßÁö¸¸ ÀÌ ¿¹Á¦´Â ±×·¸°Ô ÇÏÁö ¾Ê°í CD-ROM¿¡ ÀÖ´Â ¿¹Á¦¸¦ ºÒ·¯¿Í¼­ ºÐ¼®¸¸ Çغ¸±â·Î ÇÑ´Ù. °è¼Ó ½Ç½ÀÀ» Çϸ鼭 Á÷Á¢ ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé¾î ¿Â »ç¶÷¿¡°Ô´Â ´Ù¼Ò ½Ç¸Á½º·¯¿ïÁöµµ ¸ð¸£°ÚÁö¸¸ ÀÌ ¿¹Á¦¸¦ Á÷Á¢ ½Ç½ÀÇÒ ¼ö ÀÖµµ·Ï ÇÏÁö ¾ÊÀº µ¥´Â ³ª¸§´ë·Î ÀÌÀ¯°¡ ÀÖ´Ù. ÁÖ·Î ¸®¼Ò½º °ü¸®»óÀÇ ¹®Á¦µéÀÌ´Ù.

 

¨ç ¸®¼Ò½º ÀÛ¾÷Àº ´Ü¼ø ÀÛ¾÷À̱⠶§¹®¿¡ Á÷Á¢ ½Ç½ÀÇØ ºÁ¾ß ¾òÀ» °ÍÀÌ ¾ø´Ù. ¸®¼Ò½º´Â ´Ü¼øÇÑ µ¥ÀÌÅÍÀ̱⠶§¹®¿¡ ¾î¶² Ä¡¹ÐÇÑ ³í¸®¸¦ ´Ù·ç´Â °ÍÀÌ ¾Æ´Ï¸ç µû¶ó¼­ ½Ç½ÀÀÇ Àǹ̰¡ ¾ø´Ù. ³²ÀÌ ¸¸µé¾î ³õÀº ¸®¼Ò½º¸¦ ±×´ë·Î °°ÀÌ ¸¸µé·Á°í ÇÏ¸é ½Ã°£¸¸ ³¶ºñµÇ°í Â¥Áõ¸¸ ³¯ °ÍÀÌ´Ù. ¸®¼Ò½º ¸¸µé ½Ã°£¿¡ Äڵ带 Á» ´õ º¸´Â °ÍÀÌ ÈξÀ µµ¿òÀÌ µÈ´Ù.

¨è ±â´ÉÀÌ µé¾î°¥ ¶§¸¶´Ù ¸®¼Ò½º°¡ Á¶±Ý¾¿ ¹Ù²î´Âµ¥ ÀÏÀÏÀÌ Ä¸Ã³Çؼ­ º¸¿©ÁÖ´Â °ÍÀÌ ºñÈ¿À²ÀûÀÌ°í ½Ç½À ½Ã°£°ú Áö¸éÀÌ ³Ê¹« ¸¹ÀÌ ³¶ºñµÈ´Ù. ¸®¼Ò½º Á¦ÀÛ °úÁ¤À» Áö¸éÀ¸·Î º¸ÀÌ´Â µ¥´Â ÇÑ°è°¡ ÀÖ´Ù.

¨é ¸®¼Ò½º´Â ¹Ì¸® ¸¸µé¾î ³õ¾Æµµ ÇÁ·ÎÁ§Æ®ÀÇ ³í¸®¿¡ ÀüÇô ¹æÇظ¦ ÁÖÁö ¾Ê´Â´Ù. ÄÚµå´Â ¹Ì¸® ¸¸µé¾î ³õÀ» ¼ö°¡ ¾øÁö¸¸ ºñÆ®¸ÊÀ̳ª Ä¿¼­ °°Àº °ÍÀº óÀ½ºÎÅÍ ±×³É À־ »ó°ü¾ø´Ù. ¸®¼Ò½º°¡ ÇÊ¿äÇØÁú ¶§¸¶´Ù ÀÌ·± ¸®¼Ò½º¸¦ »ç¿ëÇÏ°Ú´Ù´Â ¾ð±Þ¸¸ ÀÖÀ¸¸é µÈ´Ù.

¨ê °¡Àå Å« ÀÌÀ¯´Â ºñÁÖ¾ó C++ .7.0ÀÌ ¸®¼Ò½º °ü¸®»óÀÇ ¹ö±×°¡ ¸¹´Ù´Â Á¡ÀÌ´Ù. ID¸¦ Á¦´ë·Î °ü¸®ÇÏÁö ¸øÇϸç Á¾¼Ó¼º üũµµ ¾û¸ÁÀ̶ó ÅøÀ» Á¦´ë·Î ¾²±â°¡ ¹«Ã´ ¾î·Æ´Ù. ƯÈ÷ Ãʺ¸ÀÚÀÇ °æ¿ì ÀÌ ¹ö±× Åõ¼ºÀÌÀÇ °³¹ßÅø·Î Ã¥À» µû¶ó ¸®¼Ò½º¸¦ ¸¸µå´Â °ÍÀº ºÒ°¡´ÉÇÏ´Ù°í ÆÇ´ÜÇß´Ù. ±×´ë·Î µû¶óÇߴµ¥ °á°ú°¡ Á¦´ë·Î ³ª¿ÀÁö ¾ÊÀ¸¸é °ï¶õÇÏ´Ù. VC 6.0Àº ¿À·§µ¿¾È ¾ÈÁ¤È­¸¦ ÇØ ¿Ô±â ¶§¹®¿¡ ¹ö±×°¡ ¾ø´Ù.

 

Dangeun1 ÇÁ·ÎÁ§Æ®¿¡ Æ÷ÇÔµÈ Dangeun.rc¿Í resource.h´Â ±â´ÉÀÌ ´Ù ¿Ï·áµÈ ÈÄÀÇ ¸ð¾ç°ú ¿ÏÀüÈ÷ °°À¸¸ç ÀÌÈÄ ½Ç½À¿¡¼­ ¸®¼Ò½º´Â ÀüÇô ÆíÁýÇÒ ÇÊ¿ä ¾øÀÌ »ç¿ë¸¸ ÇÏ¸é µÈ´Ù. ÀÌ µÎ ÆÄÀÏÀÇ ½ºÅ©¸³Æ®¿Í Çì´õ ÆÄÀÏÀº ¼ÕÀ¸·Î Á÷Á¢ ¸¸µç °ÍÀÌ´Ù. Dangeun1 ÇÁ·ÎÁ§Æ®´Â ¾ÕÀ¸·ÎÀÇ ½Ç½ÀÀ» À§ÇØ ÀÏÁ¾ÀÇ ¿¹ºñ µ¿ÀÛÀ» ÃëÇسõÀº ½ÃÀÛ ÇÁ·ÎÁ§Æ®ÀÌ´Ù. ¸®¼Ò½º¿Í ÇÁ·ÎÁ§Æ® ¿É¼Ç µîÀ» ½Ç½À¿¡ Æí¸®Çϵµ·Ï ¹Ì¸® ´Ù ÀÛ¼ºÇصξú´Ù. ÀÌÈÄ Dangeun2ºÎÅÍ´Â ´Ù½Ã ½Ç½ÀÀ» ½ÃÀÛÇÏ°Ô µÉ °ÍÀÌ´Ù.

CD-ROMÀÇ Dangeun1 Æú´õ¿¡ ÀÖ´Â Dangeun ÇÁ·ÎÁ§Æ®¸¦ ÀÐ¾î ³õ°í ±¸°æ¸¸ Çغ¸µµ·Ï ÇÏÀÚ. ÆíÁý±âÀÇ ½ÃÀÛ ÇÁ·ÎÁ§Æ®À̹ǷΠÁ÷Á¢ ¸¸µé¾î º¸Áö´Â ¾Ê´Â´Ù ÇÏ´õ¶óµµ ±¸¼ºÀº Àß ¾Ë¾ÆµÑ ÇÊ¿ä°¡ ÀÖ´Ù. ÇÑ ¹ø ÈȾ º¸¸é ÇÁ·ÎÁ§Æ®ÀÇ °³¿ä°¡ ½±°Ô ÆÄ¾ÇµÉ °ÍÀÌ´Ù. ¸ÕÀú ÇÁ·ÎÁ§Æ®ÀÇ ¼Ó¼ºÃ¢À» ¿­¾î º¸ÀÚ.

ºÒÇÊ¿äÇÑ 64ºñÆ® À̽ļº Á¡°ËÀ» ÇÏÁö ¾Êµµ·Ï Çß´Ù. ÀÌ ¿É¼ÇÀº ¼±ÅÃÇØ ºÁ¾ß °æ°í¸¸ ¸¹ÀÌ ¹ß»ýÇÑ´Ù. ºñÁÖ¾ó C++ 6.0¿¡´Â ÀÌ ¿É¼ÇÀÌ ¾øÀ¸¹Ç·Î ½Å°æ¾²Áö ¾Ê¾Æµµ µÈ´Ù. ÄÚµå »ý¼º ÅÇÀÇ ·±Å¸ÀÓ ¶óÀ̺귯¸® ¿É¼ÇÀº ´ÙÁß ½º·¹µå·Î ¼±ÅÃÇسõ¾Ò´Âµ¥ ÆÄÀÏ°Ë»ö ±â´É¿¡¼­ ½º·¹µå¸¦ »ç¿ëÇϱ⠶§¹®ÀÌ´Ù.

 

Debug ¹öÀüÀº ¡®´ÙÁß ½º·¹µå µð¹ö±×(/MTd)¡¯¸¦ ¼±ÅÃÇÏ°í Release ¹öÀüÀº ¡®´ÙÁß ½º·¹µå(/MT)¡¯¸¦ ¼±ÅÃÇÏ¿´´Ù. ¸µÅ©/ÀÔ·Â ¿É¼Ç¿¡´Â ¾ÕÀ¸·Î »ç¿ëÇÒ ÀÓÆ÷Æ® ¶óÀ̺귯¸®¸¦ ¸ðµÎ ±âÀÔÇصξú´Ù.

 

imm32.lib´Â ¹°·ÐÀÌ°í °øÅë ÄÁÆ®·Ñ ¶óÀ̺귯¸®, ½© ¶óÀ̺귯¸®, ÀÎÅÍ³Ý ¶óÀ̺귯¸®°¡ ¹Ì¸® ÇÁ·ÎÁ§Æ®¿¡ Æ÷ÇԵǾî ÀÖ´Ù. ´ÙÀ½Àº ÇÁ·ÎÁ§Æ®¿¡ ¾î¶² ¸ðµâµéÀÌ ÀÖ´ÂÁö ¼Ö·ç¼Ç Ž»ö±â¸¦ º¸ÀÚ.

ApiEdit.*´Â ApiEditTest¿¡¼­ ÀÛ¼ºÇÑ °ÍÀ» ±×´ë·Î °¡Á®¿Â °ÍÀε¥ ÀÌ ÆÄÀÏÀ» ÇÁ·ÎÁ§Æ®¿¡ Æ÷ÇÔ½ÃÅ´À¸·Î½á DangeunÀº ApiEditTest±îÁö ÀÛ¼ºµÈ ¸ðµç ¼º°ú¹°À» °è½ÂÇÏ°Ô µÈ´Ù. Dangeun.cpp°¡ È£½ºÆ®ÀÇ ¸ÞÀÎ ¸ðµâÀÌ¸ç °ð ÅؽºÆ® ÆíÁý±â ÀÚü¶ó°í ÇÒ ¼ö ÀÖ´Ù.

Util.*´Â ¾ÕÀ¸·Î ÇÊ¿äÇÑ ÀϹÝÇÔ¼ö¸¦ Á¤ÀÇÇÏ´Â ¸ðµâÀε¥ ÇöÀç´Â º°´Ù¸¥ ÇÔ¼ö°¡ ÀÛ¼ºµÇ¾î ÀÖÁö ¾Ê´Ù. Util.h¿¡´Â ÃÖÀûÈ­¿¡ »ç¿ëÇß´ø STARTQ, ENDQ µîÀÇ ¼Óµµ ÃøÁ¤ ¸ÅÅ©·Îµé¸¸ ÀÛ¼ºµÇ¾î ÀÖÀ¸¸ç Util.cpp¿¡´Â µð¹ö±ëÀ» À§ÇÑ º¸Á¶ ÇÔ¼ö Çϳª¸¦ ÀÛ¼ºÇصξú´Ù.

 

#include "stdafx.h"

 

#define DEBUGLOGFILE "c:\\DgDebug.txt"

void WriteLogFile(TCHAR *strLog,...)

{

     HANDLE hLog;

     static int count=0;

     DWORD dwWritten;

     TCHAR szLog[1024];

     TCHAR strLog2[1024];

     va_list marker;

     SYSTEMTIME st;

 

     va_start( marker, strLog );

     vsprintf(szLog,strLog,marker);

 

     if (count == 0) {

          hLog=CreateFile(DEBUGLOGFILE,GENERIC_WRITE,0,NULL,

          CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

     } else {

          hLog=CreateFile(DEBUGLOGFILE,GENERIC_WRITE,0,NULL,

          OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);

     }

 

     GetLocalTime(&st);

     wsprintf(strLog2,"Ä«¿îÅÍ=%06d(%d:%d:%d:%d) %s\r\n",count++,

          st.wHour,st.wMinute,st.wSecond,st.wMilliseconds,szLog);

     SetFilePointer(hLog,0,NULL,FILE_END);

     WriteFile(hLog,strLog2,strlen(strLog2),&dwWritten,NULL);

     CloseHandle(hLog);

}

 

WriteLogFile ÇÔ¼ö´Â °¡º¯ Àμö¸¦ Àü´Þ¹Þ¾Æ ¼­½ÄÈ­µÈ ¹®ÀÚ¿­À» ·Î±× ÆÄÀÏ¿¡ ±â·ÏÇÔÀ¸·Î½á µð¹ö±ëÀ» µµ¿ÍÁÖ´Â ÇÔ¼öÀÌ´Ù. µð¹ö°Å·Î µð¹ö±ëÀÌ ¾î·Á¿î »óȲÀÏ ¶§´Â ÀÌ ÇÔ¼ö·Î Áß°£Áß°£¿¡ º¯¼ö È®Àι®À» ÀÛ¼ºÇϵµ·Ï ÇÏ°í ·Î±× ÆÄÀÏÀ» ÂüÁ¶ÇÔÀ¸·Î½á µð¹ö±ëÇÒ ¼ö ÀÖ´Ù. ½º·¹µå°£ÀÇ µ¿±âÈ­ ¹®Á¦°¡ ÀÖÀ» ¶§³ª ¸¶¿ì½º ĸó »óȲÀ» µð¹ö±ëÇÒ ¶§´Â µð¹ö°Å¸¦ ¾µ ¼ö ¾ø±â ¶§¹®¿¡ ·Î±× ÆÄÀÏÀ» ¸¸µé¾î¾ß ÇÑ´Ù. ¶ÇÇÑ ¸±¸®Áî ¸ðµå¿¡¼­¸¸ ¹®Á¦°¡ ÀÖÀ» ¶§µµ ÀÌ ÇÔ¼ö°¡ À¯¿ëÇÏ°Ô »ç¿ëµÈ´Ù. ´ÙÀ½°ú °°Àº Çü½ÄÀ¸·Î »ç¿ëÇÑ´Ù. printf ÇÔ¼ö¿Í »ç¿ë¹æ¹ýÀÌ µ¿ÀÏÇÏ´Ù.

 

WriteLogFile("ÇöÀç ¿ÀÇÁ¼Â=%d, À̶§ÀÇ ¹®¼­ Å©±â=%d",off,doclen);

 

¾ÕÀ¸·Î ÀÌ ¸ðµâ¿¡µµ ¸¹Àº ÇÔ¼öµéÀÌ Ãß°¡µÉ °ÍÀÌ´Ù. ·¹Áö½ºÆ®¸® ÀÔÃâ·ÂÀ̳ª ½© °ü·Ã ÇÔ¼ö, ÀϹÝÀûÀ¸·Î ¸¹ÀÌ »ç¿ëµÇ´Â ÇÔ¼öµéÀÌ ÀÌ ¸ðµâ¿¡ ÀÛ¼ºµÇ¸ç ´ç±Ù ÇÁ·ÎÁ§Æ®¿¡¼­ »ç¿ëÇÒ º¸Á¶ Ŭ·¡½ºµéµµ ÀÌ ÆÄÀÏ¿¡ ÀÛ¼ºµÈ´Ù. ÇÁ·ÎÁ§Æ®°¡ Á¡Á¡ Ä¿Áü¿¡ µû¶ó ¸ÞÀÎ ¸ðµâ¿¡¼­ ¸ðµç °ÍÀ» ó¸®ÇϱⰡ ¾î·Á¿öÁö±â ¶§¹®¿¡ º¸Á¶ ¸ðµâÀ» ¸¸µé¾ú´Ù.