³ª. ÅÇ °ü¸® ÇÔ¼ö

ÅÇ ÇÁ·¹ÀÓÀ» ¸¸µé°í ±× Â÷Àϵå·Î ÅÇ ÄÁÆ®·ÑÀ» ¸¸µé¾î µÎ¾úÀ¸¹Ç·Î ÆÄÀÏÀÌ ¿­¸± ¶§¸¶´Ù ÅÇÀ» Ãß°¡ÇÏ¿© ¿­¸° ÆÄÀϸíÀ» º¸¿©ÁÖ¸é µÈ´Ù. ´ÙÀ½ ³× ÇÔ¼ö´Â ÅÇ ÄÁÆ®·ÑÀ» °ü¸®ÇÏ´Â ÇÔ¼öÀ̸ç ÅÇÀ» Ãß°¡, »èÁ¦, º¯°æ, °Ë»öÇÑ´Ù. ÅÇ ÄÁÆ®·ÑÀ» ÇÁ·Î±×·¡¹ÖÇÏ´Â ¹æ¹ýÀº ¸®½ºÆ® ºä³ª Æ®¸® ºä ÄÁÆ®·Ñ°ú °ÅÀÇ µ¿ÀÏÇÏ´Ù.

 

void AddFileTab(TCHAR *Path)

{

     TCITEM tie;

     int count;

     TCHAR Ext[_MAX_EXT];

     TCHAR Name[MAX_PATH];

     TCHAR *Param;

 

     Param=(TCHAR *)malloc(MAX_PATH);

     lstrcpy(Param,Path);

     _splitpath(Path,NULL,NULL,Name,Ext);

     lstrcat(Name,Ext);

     count=TabCtrl_GetItemCount(hFileTab);

     tie.mask=TCIF_TEXT | TCIF_PARAM | TCIF_IMAGE;

     tie.pszText=Name;

     tie.lParam=(LPARAM)Param;

     tie.iImage=0;

     TabCtrl_InsertItem(hFileTab,count,&tie);

     TabCtrl_SetCurSel(hFileTab,count);

     if (count==0) {

          InvalidateRect(hFileTab,NULL,TRUE);

     }

}

 

int FindFileTab(TCHAR *Path)

{

     int idx;

     int count;

     TCITEM tie;

 

     count=TabCtrl_GetItemCount(hFileTab);

     for (idx=0;idx<count;idx++) {

          tie.mask=TCIF_PARAM;

          TabCtrl_GetItem(hFileTab,idx,&tie);

          if (lstrcmpi(Path,(TCHAR *)tie.lParam)==0) {

              return idx;

          }

     }

     return -1;

}

 

void DeleteFileTab(TCHAR *Path)

{

     int idx;

     TCITEM tie;

 

     idx=FindFileTab(Path);

     tie.mask=TCIF_PARAM;

     TabCtrl_GetItem(hFileTab,idx,&tie);

     free((LPVOID)tie.lParam);

     TabCtrl_DeleteItem(hFileTab,idx);

}

 

void ChangeFileTab(int idx, TCHAR *Path)

{

     TCITEM tie;

     TCHAR Ext[_MAX_EXT];

     TCHAR Name[MAX_PATH];

     TCHAR *Param;

 

     tie.mask=TCIF_PARAM;

     TabCtrl_GetItem(hFileTab,idx,&tie);

     Param=(TCHAR *)tie.lParam;

     lstrcpy(Param,Path);

 

     _splitpath(Path,NULL,NULL,Name,Ext);

     lstrcat(Name,Ext);

     tie.mask=TCIF_TEXT | TCIF_IMAGE;

     tie.pszText=Name;

     tie.iImage=0;

     TabCtrl_SetItem(hFileTab,idx,&tie);

}

 

AddFileTab ÇÔ¼ö´Â Àμö·Î Àü´ÞµÈ Path ÆÄÀÏÀ» ÅÇ¿¡ Ãß°¡ÇÑ´Ù. ÅÇÀÇ °ø°£ÀÌ ³ÐÁö ¾Ê±â ¶§¹®¿¡ ¿ÏÀü °æ·Î¸¦ ´Ù Ç¥½ÃÇÒ ¼ö ¾øÀ¸¸ç ÆÄÀÏ À̸§¸¸ ÃßÃâÇÏ¿© ª°Ô Ç¥½ÃÇÑ´Ù. ¿¹¸¦ µé¾î C:\data\file.txt ÆÄÀÏÀ» ¿­¾ú´Ù¸é µå¶óÀ̺ê¸í°ú Æú´õ °æ·Î´Â »©°í file.txt¸¸ ÅÇ¿¡ Ç¥½ÃÇÑ´Ù. ÇÏÁö¸¸ »ç¿ëÀÚ°¡ ÅÇÀ» ¼±ÅÃÇßÀ» ¶§ ÀÌ ÆÄÀÏÀ» ´Ù½Ã ã¾Æ°¡±â À§Çؼ­´Â ¿ÏÀü °æ·Î¸¦ ¾îµò°¡¿¡ ÀúÀåÇصξî¾ß ÇÑ´Ù. ´Ù¸¥ °æ·ÎÀÇ °°Àº À̸§À» °¡Áö´Â µÎ ÆÄÀÏÀ» µ¿½Ã¿¡ ÆíÁýÇÒ ¼öµµ Àֱ⠶§¹®¿¡ ÅÇ¿¡ Ç¥½ÃµÈ ÆÄÀÏ¸í¸¸À¸·Î´Â ¾î¶² ÆÄÀÏÀ» ÆíÁýÇÏ°í ÀÖ´ÂÁö Á¤È®ÇÏ°Ô ±¸ºÐÇÒ ¼ö ¾ø´Ù.

±×·¡¼­ ¿ÏÀü °æ·Î ÀúÀåÀ» À§ÇÑ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÏ°í »ç¿ëÀÚÁ¤ÀÇ µ¥ÀÌÅÍ(lParam)¿¡ ±× Æ÷ÀÎÅ͸¦ ÀúÀåÇصξú´Ù. »ç¿ëÀÚ°¡ ÅÇÀ» ¼±ÅÃÇϸé ÅÇÀÇ lParam¿¡ ÀúÀåµÈ ¿ÏÀü °æ·Î¸¦ Àоî ÀÌ ÆÄÀÏÀ» È°¼ºÈ­½ÃÅ°¸é µÈ´Ù. lParam¿¡ ÇÒ´çµÈ ¸Þ¸ð¸®´Â ÅÇÀÌ »èÁ¦µÉ ¶§ÀÎ DeleteFileTab¿¡¼­ ÇØÁ¦µÈ´Ù.

FindFileTab ÇÔ¼ö´Â Àμö·Î Àü´ÞµÈ Path ÆÄÀÏÀ» Ç¥½ÃÇÏ°í ÀÖ´Â ÆÄÀÏÅÇÀ» ã¾Æ Áִµ¥ ¸ðµç ÅÇÀÇ »ç¿ëÀÚÁ¤ÀÇ µ¥ÀÌÅÍ¿Í Path¸¦ ºñ±³Çغ¸°í ÀÏÄ¡µÇ´Â ÅÇÀÇ À妽º¸¦ ã¾ÆÁØ´Ù. ¸¸¾à Path ÆÄÀÏÀ» ÆíÁýÇÏ°í ÀÖ´Â ÅÇÀÌ ¾øÀ¸¸é -1À» ¸®ÅÏÇÑ´Ù. DeleteFileTabÀº ÅÇÀ» »èÁ¦Çϸç ChangeFileTabÀº ÅÇÀÇ ÅؽºÆ®¿Í »ç¿ëÀÚÁ¤ÀÇ µ¥ÀÌÅ͸¦ ±³Ã¼ÇÑ´Ù.