ÅÇ ÇÁ·¹ÀÓÀ» ¸¸µé°í ±× Â÷Àϵå·Î ÅÇ ÄÁÆ®·ÑÀ» ¸¸µé¾î µÎ¾úÀ¸¹Ç·Î ÆÄÀÏÀÌ ¿¸± ¶§¸¶´Ù ÅÇÀ» Ãß°¡ÇÏ¿© ¿¸° ÆÄÀϸíÀ» º¸¿©ÁÖ¸é µÈ´Ù. ´ÙÀ½ ³× ÇÔ¼ö´Â ÅÇ ÄÁÆ®·ÑÀ» °ü¸®ÇÏ´Â ÇÔ¼öÀ̸ç ÅÇÀ» Ãß°¡, »èÁ¦, º¯°æ, °Ë»öÇÑ´Ù. ÅÇ ÄÁÆ®·ÑÀ» ÇÁ·Î±×·¡¹ÖÇÏ´Â ¹æ¹ýÀº ¸®½ºÆ® ºä³ª Æ®¸® ºä ÄÁÆ®·Ñ°ú °ÅÀÇ µ¿ÀÏÇÏ´Ù.
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Àº ÅÇÀÇ ÅؽºÆ®¿Í »ç¿ëÀÚÁ¤ÀÇ µ¥ÀÌÅ͸¦ ±³Ã¼ÇÑ´Ù.