¹®¹ý°Á¶ ±â´ÉÀº 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 ÇÔ¼ö¸¦ È®ÀåÇÏ¸é µÈ´Ù.