°¡. È®ÀåÀÚ ¿¬°á

¹®¹ý°­Á¶ ±â´ÉÀº ApiEdit¿Í ºÐ¼®±âÀÇ ÇùÁ¶¿¡ ÀÇÇØ ±¸ÇöµÇ¸ç È£½ºÆ® ÇÁ·Î±×·¥Àº °ÅÀÇ °ü¿©ÇÏÁö ¾Ê´Â´Ù. È£½ºÆ®°¡ ¹®¹ý°­Á¶¿Í °ü·ÃÇؼ­ Á¦°øÇÏ´Â À¯ÀÏÇÑ ±â´ÉÀº ¹®¼­°¡ ¿­¸± ¶§ ¾î¶² ¹®¹ýÀ» Àû¿ëÇÒ °ÍÀÎÁö¸¦ ÀÚµ¿À¸·Î ¼±ÅÃÇÏ´Â °ÍÀÌ´Ù. ApiEdit´Â ¹®¼­¸¦ ¹®ÀÚ¿­ µ¢¾î¸®·Î¸¸ ÀνÄÇÒ »Ó ÆÄÀÏ¿¡ ´ëÇؼ­´Â ¸ð¸£±â ¶§¹®¿¡ ºÐ¼®±â¸¦ ¼±ÅÃÇÏ´Â ÀÛ¾÷Àº È£½ºÆ®°¡ ÇØ¾ß ÇÑ´Ù.

È£½ºÆ®´Â ÆÄÀÏÀ» ¿­ ¶§ È®ÀåÀÚ¸¦ º¸°í ÀûÀýÇÑ ºÐ¼®±â¸¦ ¼±ÅÃÇÑ´Ù. È®ÀåÀÚ°¡ .cpp³ª .hÀ̸é ÀÌ ÆÄÀÏÀ» C ¾ð¾î ¼Ò½º·Î ÀνÄÇÏ°í htmÀ̳ª htmlÀ̸é À¥ ¹®¼­ ÆÄÀÏ·Î ÀνÄÇÏ´Â °ÍÀÌ´Ù. À©µµ¿ìÁî´Â ÆÄÀÏÀÇ Á¾·ù ±¸ºÐÀ» À§ÇØ º°µµÀÇ Ç¥½ÄÀ» ´ÞÁö ¾ÊÀ¸¹Ç·Î È®ÀåÀÚ ÀÌ¿Ü¿¡´Â ÆÄÀÏÀÇ ¹®¹ýÀ» ÆÇ´ÜÇÒ ¼ö ÀÖ´Â ±Ù°Å°¡ ÀüÇô ¾ø´Ù. È®ÀåÀÚ ¿¬°á »óŵµ Àü¿ª ¿É¼ÇÀ̹ǷΠSOption ±¸Á¶Ã¼¿¡ ±â¾ï½ÃŲ´Ù. SOption¿¡ ´ÙÀ½ ¹è¿­À» Ãß°¡ÇÑ´Ù.

 

struct SOption

{

     ....

     TCHAR arExt[4][250];

};

 

°¢ ºÐ¼®±âº°·Î ¿¬°áµÈ È®ÀåÀÚ ¸ñ·ÏÀ» ¹®ÀÚ¿­·Î Á¤ÀÇÇÑ´Ù. ÇöÀç ÃÑ 4°³ÀÇ ºÐ¼®±â¸¦ °èȹÇÏ°í ÀÖÀ¸¹Ç·Î ¹è¿­Å©±â¸¦ 4·Î ÇÏ¿´´Ù. 0¹øÀº ±âº» ºÐ¼®±âÀε¥ ±âº» ºÐ¼®±â´Â ³ª¸ÓÁö ºÐ¼®±â°¡ ó¸®ÇÏÁö ¾Ê´Â ¸ðµç ÆÄÀÏÀ» ó¸®ÇϹǷΠ¿¬°áµÉ È®ÀåÀÚ¸¦ º°µµ·Î °¡ÁöÁö ¾Ê´Â´Ù. °á±¹ 0¹ø ÷ÀÚ´Â ¹ö¸®´Â ¼ÀÀÌ´Ù. ÀÌ ¹è¿­Àº Util.cpp¿¡¼­ ´ÙÀ½°ú °°ÀÌ ÃʱâÈ­ÇÑ´Ù.

 

void SOption::Init()

{

     ....

     lstrcpy(arExt[0],"");

     lstrcpy(arExt[1],"c;cpp;h;hpp");

     lstrcpy(arExt[2],"html;htm;asp;php");

     lstrcpy(arExt[3],"sql");

};

 

1¹ø ºÐ¼®±â¿Í ¿¬°áµÇ´Â È®ÀåÀÚ´Â c,cpp,h,hpp ³× °¡Áö¶ó´Â ¶æÀÌ´Ù. ÀÌ ¹è¿­°ªµµ ¾îµð±îÁö³ª ÃʱⰪ¿¡ ºÒ°úÇÏ¸ç »ç¿ëÀÚ¿¡ ÀÇÇØ º¯°æµÉ ¼ö ÀÖ´Ù. È£½ºÆ®´Â ÆÄÀÏÀ» ¿­ ¶§ ÆÄÀÏÀÇ È®ÀåÀÚ°¡ ¾î¶² ¹è¿­¿¡ ¼ÓÇÏ´ÂÁö º¸°í ÀûÀýÇÑ ºÐ¼®±â¸¦ ¼±ÅÃÇØ¾ß ÇÑ´Ù. Dangeun.cpp¿¡ ´ÙÀ½ ÇÔ¼ö¸¦ Ãß°¡ÇÑ´Ù.

 

void SelectParser(CApiEdit &Ae,TCHAR *path)

{

     TCHAR ext[_MAX_EXT];

     int i;

     int ID=0;

 

     _splitpath(path,NULL,NULL,NULL,ext);

     CharLower(ext);

     for (i=1;i<=3;i++) {

          if (strstr(Option.arExt[i],ext+1)!=0) {

              ID=i;

              break;

          }

     }

 

     Ae.SetParser(ID);

}

 

ÀÌ ÇÔ¼ö´Â ÆÄÀÏÀÇ È®ÀåÀڷκÎÅÍ ºÐ¼®±â¸¦ ¼±ÅÃÇÑ´Ù. 0¹ø ºÐ¼®±â°¡ µðÆúÆ®À̹ǷΠID´Â 0À¸·Î ÃʱâÈ­ÇÏ¿´´Ù. ¿­°íÀÚ ÇÏ´Â ÆÄÀÏÀÇ È®ÀåÀÚ¸¦ Á¶»çÇÑ ÈÄ ÀÌ È®ÀåÀÚ¿Í ¿¬°áµÈ ºÐ¼®±â¸¦ Á¶»çÇÑ´Ù. ¿¬°áµÈ ºÐ¼®±â°¡ ¾øÀ¸¸é IDÀÇ µðÆúÆ®°ªÀÎ 0ÀÌ ±×´ë·Î Àû¿ëµÇ¾î ±âº» ºÐ¼®±â°¡ ¼±ÅÃµÇ¸ç ¹®¹ý°­Á¶¸¦ ÇÏÁö ¾Ê´Â´Ù. ¿¬°áµÈ ºÐ¼®±â¸¦ ãÀ¸¸é ±× ºÐ¼®±âÀÇ ID·ÎºÎÅÍ ApiEditÀÇ SetParser ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ºÐ¼®±â¸¦ ¼±ÅÃÇÑ´Ù.

¿¬°áµÉ È®ÀåÀÚ ¸ñ·ÏÀ» ºÐ¼®±â°¡ Á¤ÀÇÇÒ ¼ö ÀÖ´Ù¸é ´õ ÁÁÀ» °Í °°´Ù. GetInfo ÇÔ¼ö·Î È®ÀåÀÚÀÇ ¸ñ·ÏÀ» Á¶»çÇÒ ¼ö ÀÖµµ·Ï ÇÏ°í È£½ºÆ®´Â ºÐ¼®±âÀÇ GetInfo ÇÔ¼ö¸¦ È£ÃâÇÏ¿© ÀÌ ¹®¼­¸¦ ó¸®ÇÒ ¼ö ÀÖ´ÂÁö Áú¹®ÇÏ¸é µÈ´Ù. ÀÓÀÇÀÇ È®ÀåÀÚ abc°¡ ÀÖÀ» ¶§ ºÐ¼®±â¸¦ ¼øȸÇϸ鼭 ¡®¾ß! ÀÌ°Å ´Ï °Å¾ß?¡¯ Çϸ鼭 Áú¹®À» ´øÁö´Ù°¡ ±× Áß ÇÑ ºÐ¼®±â°¡ ¡®±×°Å Á¦ °Çµ¥¿ä¡¯¶ó´Â ÀÀ´äÀ» ÇÏ¸é ±× ºÐ¼®±â¸¦ ¼±ÅÃÇÏ¸é µÈ´Ù. ¾Æ¹«µµ ÀÀ´äÇÏÁö ¾ÊÀ¸¸é ±âº» ºÐ¼®±â°¡ ¼±ÅÃµÉ °ÍÀÌ´Ù.

°ú¿¬ ÁÁÀº »ý°¢À̱â´Â ÇÏÁö¸¸ ÇöÀç ±¸Á¶¿¡¼­´Â ºÐ¼®±â¸¦ ÀÏÀÏÀÌ µ¿ÀûÀ¸·Î »ý¼ºÇؾ߸¸ ÇÏ´Â Å« ¹®Á¦°¡ ÀÖ¾î ½ÇÁ¦ Àû¿ëÇϱⰡ ¾î·Æ´Ù. ºÐ¼®±â°¡ 20°³ Á¤µµ µÇ¸é ¸ðµç ºÐ¼®±â¸¦ »ý¼º, ÇØÁ¦Çϸ鼭 È®ÀåÀÚ¸¦ Á¶»çÇØ¾ß Çϴµ¥ ½Ã°£ÀÌ ³Ê¹« ¸¹ÀÌ °É¸®±â ¶§¹®ÀÌ´Ù. ±×·¡¼­ ºÒ°¡ÇÇÇÏ°Ô È£½ºÆ®°¡ È®ÀåÀÚ¿Í ºÐ¼®±âÀÇ ¿¬°á °ü°è¸¦ °¡Áöµµ·Ï ÇÏ¿´´Ù.

ÀÌ ÇÔ¼ö´Â OpenFileToChild ÇÔ¼ö¿¡¼­ ÆÄÀÏÀ» ¿­ ¶§ È£ÃâÇÑ´Ù. ÆÄÀÏ¿­±â¿¡ ¼º°øÇϸé ÀÌ ÆÄÀÏÀ» ºÐ¼®Çϱâ À§ÇÑ ÀûÀýÇÑ ºÐ¼®±â¸¦ »ý¼ºÇϸç ÆÄÀÏÀÌ È­¸é¿¡ Ãâ·ÂµÇ±â Àü¿¡ ºÐ¼®±â°¡ µ¿ÀÛÇÏ¿© ¹®¹ýÀ» ºÐ¼®ÇسõÀ» °ÍÀÌ´Ù.

 

BOOL OpenFileToChild(HWND hChild, TCHAR *Path)

{

     ....

    SelectParser(pSi->Ae,Path);

     pSi->Ae.InitDoc();

     ....

 

»õ ÆÄÀÏ¿¡ À̸§À» ÁÖ°í ÀúÀåÇÒ ¶§µµ »ç¿ëÀÚ°¡ ÀÔ·ÂÇÑ ÆÄÀϸíÀ¸·ÎºÎÅÍ ÀûÀýÇÑ ºÐ¼®±â¸¦ ¼±ÅÃÇØ¾ß ÇÑ´Ù. ¿¹¸¦ µé¾î ¡®À̸§¾øÀ½ 12¡¯¸¦ ÀÛ¼ºÇÑ ÈÄ index.html·Î ÀúÀåÇÑ´Ù¸é ÀÌÁ¦ºÎÅÍ ÀÌ ÆÄÀÏÀº HTML·Î ºÐ¼®ÇØ¾ß ÇÑ´Ù. SaveAs ÇÔ¼ö¿¡ ´ÙÀ½ Äڵ带 Ãß°¡ÇÑ´Ù.

 

BOOL SaveAs(HWND hChild)

{

     ....

    SelectParser(pSi->Ae,OFN.lpstrFile);

     Mru.AddMRU(OFN.lpstrFile);

     lstrcpy(pSi->NowFile,OFN.lpstrFile);

     SetWindowText(hChild,pSi->NowFile);

     return TRUE;

}

 

ºÐ¼®±âÀÇ Á¾·ù°¡ ´õ ¸¹ÀÌ ´Ã¾î³ª¸é SOption ±¸Á¶Ã¼ÀÇ arExt ¹è¿­À» ´Ã·Á ÁÖ°í ApiEditÀÇ SetParser ÇÔ¼ö¸¦ È®ÀåÇÏ¸é µÈ´Ù.