ÆÄÀÏâÀº ´ç±ÙÀÌ ³»ÀåÇÏ°í ÀÖ´Â ¹Ì´Ï Ž»ö±â¶ó°í »ý°¢ÇÏ¸é µÈ´Ù. ¸ÞÀÎ À©µµ¿ìÀÇ ¿ÞÂÊ º®¿¡ °¢ µå¶óÀ̺êÀÇ ÆÄÀϵéÀ» º¸¿©ÁÖ°í ¿©±â¼ ¹Ù·Î ÆÄÀÏÀ» ¿ ¼ö ÀÖµµ·Ï ÇÏ´Â ÀåÄ¡ÀÌ´Ù. ÆÄÀÏ¿±â ´ëÈ»óÀÚ´Â ¼Óµµ°¡ ³Ê¹« ´À¸®°í Ž»ö±â´Â µû·Î ¿¾î¾ß Çϱ⠶§¹®¿¡ ºÒÆíÇÏ´Ù. ±×·¡¼ ¾Æ¿¹ ÆíÁý±â ³»ºÎ¿¡ µð½ºÅ©ÀÇ ÆÄÀÏÀ» ¹Ù·Î ¼±ÅÃÇÒ ¼ö Àִ Ž»ö±â¸¦ ³»ÀåÇϵµ·Ï Çß´Ù.
·ÎÄà µå¶óÀ̺ê¿Í ³×Æ®¿öÅ©·Î ¿¬°áµÈ µå¶óÀ̺êÀÇ Æú´õ, ÆÄÀÏ ¸ñ·ÏÀ» º¸¿©ÁÖ´Â °ÍÀÌ ÁÖµÈ ±â´ÉÀ̸ç ÆÄÀÏÀ» ¿°Å³ª À̸§ º¯°æ, »èÁ¦ µîÀÇ °£´ÜÇÑ ÆÄÀÏ °ü¸® ±â´Éµµ ³»ÀåÇÏ°í ÀÖ´Ù. ´õ Á¤±³ÇÏ°Ô ¸¸µéÀÚ¸é ÆÄÀÏ°ú °ü·ÃµÈ ¸¹Àº ÀÛ¾÷µéÀ» ÇÒ ¼ö ÀÖ°ÚÁö¸¸ ÅؽºÆ® ÆíÁý±â ¼öÁØ¿¡¼ ²À ÇÊ¿äÇÏ´Ù°í ÆǴܵǴ ±â´É¸¸ ÀÛ¼ºÇß´Ù. ÀÌ ±â´ÉÀÌ ²À ÇÊ¿äÇÏ´Ù°í »ý°¢µÇÁö´Â ¾ÊÁö¸¸ ´Ù¸¥ ÆíÁý±âµéµµ ÆÄÀÏâÀ» Á¦°øÇϹǷΠºñ½ÁÇÑ ½ºÆÑÀ» °®Ãß±â À§ÇØ ÀÏ´Ü ±â´ÉÀ» ±¸ÇöÇصξú´Ù. µðÆúÆ® ¼³Á¤»óÅ¿¡¼ ÀÌ Ã¢Àº ¼û°ÜÁ® ÀÖ´Ù. ´ÙÀ½ ÇÔ¼öµéÀº ÆÄÀÏâÀ» ±¸ÇöÇϱâ À§ÇÑ º¸Á¶ ÇÔ¼öµéÀÌ´Ù.
BOOL IsDirEmpty(TCHAR *Path);
HTREEITEM FindInsAfter(HTREEITEM hParent, int iImage, TCHAR *Name);
int OnFindNode(TCHAR *Path,DWORD Attr,LPVOID pCustom);
void GetNodePath(HTREEITEM pNode, TCHAR *Path);
void InitTree();
void GetCurrentFolder(TCHAR *Path);
void GotoFolderInTree(TCHAR *Path);
void RefreshTree();
´ÙÀ½ ÄÚµå´Â ÆÄÀÏâÀ» ±¸ÇöÇϱâ À§ÇÑ Àüü ¼Ò½ºÀÌ´Ù. ¾Õ¿¡¼ ²®µ¥±â·Î ¸¸µé¾î µÎ¾ú´ø DGFileProc ÇÔ¼ö¸¦ ´Ù½Ã ÀÛ¼ºÇßÀ¸¸ç ÆÄÀÏ ¸ñ·Ï °ü¸®¸¦ À§ÇÑ °ü·Ã À¯Æ¿¸®Æ¼ ÇÔ¼öµéÀÌ ¸¹ÀÌ ÇÊ¿äÇÏ´Ù. ÀÌ ¼Ò½º¸¦ ÀüºÎ ´Ù ÀÔ·ÂÇϱâ´Â ¾î·Á¿ì¹Ç·Î CD-ROMÀÇ ¼Ò½º¿¡¼ º¹»çÇØ ºÙ¿©³Ö°í Äڵ带 ºÐ¼®Çغ¸±â ¹Ù¶õ´Ù. ´ëºÎºÐ Æ®¸® ºä ÄÁÆ®·ÑÀ» ´Ù·ç´Â ÄÚµåµéÀ̸ç Æ®¸® ºä¿¡ Àͼ÷ÇÏ´Ù¸é ¾ÆÁÖ ½¬¿î ÄÚµåÀÌ´Ù.
enum {DGI_DRIVE, DGI_DRIVESEL, DGI_FOLDER, DGI_FOLDERSEL, DGI_FILE, DGI_FILESEL,
DGI_PROJECT, DGI_PROJECTSEL, DGI_SUB, DGI_SUBSEL};
....
BOOL IsDirEmpty(TCHAR *Path)
{
TCHAR SrchPath[MAX_PATH];
WIN32_FIND_DATA wfd;
HANDLE hSrch;
BOOL nResult=TRUE;
BOOL Result=FALSE;
TCHAR *szFilter;
lstrcpy(SrchPath, Path);
lstrcat(SrchPath, "\\*.*");
hSrch=FindFirstFile(SrchPath,&wfd);
szFilter=(TCHAR *)SendMessage(hFilter,CB_GETITEMDATA,SendMessage(hFilter,CB_GETCURSEL,0,0),0);
while (nResult) {
if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
if (wfd.cFileName[0]!=¡®.¡¯) {
Result=TRUE;
break;
}
} else {
if (IsMatch(wfd.cFileName,szFilter)) {
Result=TRUE;
break;
}
}
nResult=FindNextFile(hSrch,&wfd);
}
FindClose(hSrch);
return Result;
}
HTREEITEM FindInsAfter(HTREEITEM hParent, int iImage, TCHAR *Name)
{
HTREEITEM Node;
TVITEM TV;
TCHAR Text[MAX_PATH];
Node=TreeView_GetNextItem(hFileTree,hParent,TVGN_CHILD);
if (Node==NULL) {
return TVI_FIRST;
}
if (iImage == DGI_FILE) {
for (;;) {
TV.mask=TVIF_IMAGE;
TV.hItem=Node;
TreeView_GetItem(hFileTree,&TV);
if (TV.iImage== DGI_FILE) {
break;
}
Node=TreeView_GetNextSibling(hFileTree,Node);
if (Node==NULL) {
return TVI_LAST;
}
}
}
for (;;) {
TV.mask=TVIF_TEXT | TVIF_IMAGE;
TV.hItem=Node;
TV.pszText=Text;
TV.cchTextMax=MAX_PATH;
TreeView_GetItem(hFileTree,&TV);
if (iImage==DGI_FOLDER && TV.iImage==DGI_FILE) {
break;
}
if (lstrcmpi(Name,Text) < 0) {
break;
}
Node=TreeView_GetNextSibling(hFileTree,Node);
if (Node==NULL) {
return TVI_LAST;
}
}
Node=TreeView_GetPrevSibling(hFileTree,Node);
if (Node==NULL) {
return TVI_FIRST;
} else {
return Node;
}
}
int OnFindNode(TCHAR *Path,DWORD Attr,LPVOID pCustom)
{
TVINSERTSTRUCT TI;
TVITEM TV;
HTREEITEM hParent=(HTREEITEM)pCustom;
HTREEITEM Node;
TCHAR Ext[_MAX_EXT];
TCHAR Name[MAX_PATH];
_splitpath(Path,NULL,NULL,Name,Ext);
lstrcat(Name,Ext);
TI.hParent=hParent;
TI.item.mask=TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
if (Attr & FILE_ATTRIBUTE_DIRECTORY) {
if (Name[0]==¡®.¡¯) {
return 0;
}
TI.item.iImage=DGI_FOLDER;
TI.item.iSelectedImage=DGI_FOLDERSEL;
} else {
TI.item.iImage=DGI_FILE;
TI.item.iSelectedImage=DGI_FILESEL;
}
TI.hInsertAfter=FindInsAfter(hParent,TI.item.iImage,Name);
TI.item.pszText=Name;
Node=TreeView_InsertItem(hFileTree,&TI);
if ((Attr & FILE_ATTRIBUTE_DIRECTORY) && IsDirEmpty(Path)) {
TV.mask=TVIF_CHILDREN;
TV.hItem=Node;
TV.cChildren=1;
TreeView_SetItem(hFileTree,&TV);
}
return 0;
}
void GetNodePath(HTREEITEM pNode, TCHAR *Path)
{
HTREEITEM tNode;
TVITEM TV;
TCHAR Text[MAX_PATH];
TCHAR szTemp[MAX_PATH];
TV.mask=TVIF_TEXT;
TV.pszText=Text;
TV.cchTextMax=MAX_PATH;
Path[0]=0;
for (tNode=pNode;tNode!=NULL;) {
TV.hItem=tNode;
TreeView_GetItem(hFileTree,&TV);
if (TreeView_GetParent(hFileTree,tNode)==NULL) {
Text[1]=¡®:¡¯;
Text[2]=0;
wsprintf(szTemp,"%s%s",Text,Path);
} else {
wsprintf(szTemp,"\\%s%s",Text,Path);
}
lstrcpy(Path,szTemp);
tNode=TreeView_GetParent(hFileTree,tNode);
}
}
void InitTree()
{
TVINSERTSTRUCT TI;
TVITEM TV;
HTREEITEM Node;
TCHAR c;
TCHAR Caption[MAX_PATH];
UINT DriveType;
TreeView_DeleteAllItems(hFileTree);
TI.hParent=0;
TI.hInsertAfter=TVI_LAST;
TI.item.mask=TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
TI.item.iImage=DGI_DRIVE;
TI.item.iSelectedImage=DGI_DRIVESEL;
for (c=¡®C¡¯;c<=¡®Z¡¯;c++) {
wsprintf(Caption,"%c:\\",c);
DriveType=GetDriveType(Caption);
if (DriveType==DRIVE_FIXED || DriveType==DRIVE_REMOTE) {
wsprintf(Caption,"%c µå¶óÀ̺ê",c);
TI.item.pszText=Caption;
Node=TreeView_InsertItem(hFileTree,&TI);
TV.mask=TVIF_CHILDREN;
TV.hItem=Node;
TV.cChildren=1;
TreeView_SetItem(hFileTree,&TV);
}
}
}
void GetCurrentFolder(TCHAR *Path)
{
TVITEM TV;
HTREEITEM Node;
Node=TreeView_GetSelection(hFileTree);
if (Node==NULL) {
lstrcpy(Path,"");
return;
}
TV.mask=TVIF_IMAGE;
TV.hItem=Node;
TreeView_GetItem(hFileTree,&TV);
if (TV.iImage == DGI_FILE) {
Node=TreeView_GetParent(hFileTree,Node);
}
GetNodePath(Node,Path);
}
void GotoFolderInTree(TCHAR *Path)
{
TVITEM TV;
HTREEITEM Node;
TCHAR Text[MAX_PATH];
TCHAR Part[MAX_PATH];
TCHAR *p,*p2;
if (lstrlen(Path)==0) {
return;
}
Node=TreeView_GetRoot(hFileTree);
p=Path;
for (;;) {
if (p==Path) {
wsprintf(Part,"%c µå¶óÀ̺ê",Path[0]);
} else {
p2=strchr(p,¡¯\\¡¯);
if (p2==NULL) {
lstrcpy(Part,p);
} else {
lstrcpyn(Part,p,p2-p+1);
}
}
for (;;) {
TV.mask=TVIF_TEXT;
TV.pszText=Text;
TV.cchTextMax=MAX_PATH;
TV.hItem=Node;
TreeView_GetItem(hFileTree,&TV);
if (lstrcmpi(Text,Part)==0) {
break;
}
Node=TreeView_GetNextSibling(hFileTree,Node);
if (Node==NULL) {
return;
}
}
TreeView_Expand(hFileTree,Node,TVE_EXPAND);
p=strchr(p,¡¯\\¡¯);
if (p==NULL) {
break;
}
p++;
Node=TreeView_GetChild(hFileTree,Node);
}
if (Node) {
TreeView_Select(hFileTree,Node,TVGN_CARET);
TreeView_EnsureVisible(hFileTree,Node);
}
}
void RefreshTree()
{
TCHAR LastFolder[MAX_PATH];
GetCurrentFolder(LastFolder);
InitTree();
GotoFolderInTree(LastFolder);
}
LRESULT CALLBACK DGFileProc(HWND hWnd,UINT iMessage,WPARAM wParam,LPARAM lParam)
{
TVITEM TV;
HTREEITEM Node;
TCHAR Path[MAX_PATH];
TCHAR *szFilter;
int idx;
HMENU hMenu, hPopup;
LPNMHDR hdr;
LPNMTREEVIEW ntv;
LPNMTVDISPINFO ndi;
TCHAR NewPath[MAX_PATH];
TCHAR Dir[_MAX_DIR];
HTREEITEM tNode, tNode2;
switch(iMessage) {
case WM_CREATE:
hFilter=CreateWindow("combobox",NULL,WS_CHILD | WS_VISIBLE | CBS_DROPDOWNLIST,
0,0,0,0,hWnd,(HMENU)0,g_hInst,NULL);
SendMessage(hFilter,WM_SETFONT,(WPARAM)hGul9,(LPARAM)FALSE);
idx=SendMessage(hFilter,CB_ADDSTRING,0,(LPARAM)"¸ðµç ÅؽºÆ® ÆÄÀÏ");
SendMessage(hFilter,CB_SETITEMDATA,idx,(LPARAM)"*.txt;*.c;*.cpp;*.h;*.hpp;"
"*.html;*.htm;*.asp;*.asa;*.php;*.php3;*.php4;*.shtml;*.sql;*.ini;"
"*.log;*.pas;*.java;*.xml");
idx=SendMessage(hFilter,CB_ADDSTRING,0,(LPARAM)"¸ðµç ÆÄÀÏ");
SendMessage(hFilter,CB_SETITEMDATA,idx,(LPARAM)"*.*");
idx=SendMessage(hFilter,CB_ADDSTRING,0,(LPARAM)"ÅؽºÆ® ÆÄÀÏ");
SendMessage(hFilter,CB_SETITEMDATA,idx,(LPARAM)"*.txt");
idx=SendMessage(hFilter,CB_ADDSTRING,0,(LPARAM)"C/C++ ÆÄÀÏ");
SendMessage(hFilter,CB_SETITEMDATA,idx,(LPARAM)"*.c;*.cpp;*.h;*.hpp;*.inl");
idx=SendMessage(hFilter,CB_ADDSTRING,0,(LPARAM)"HTML ÆÄÀÏ");
SendMessage(hFilter,CB_SETITEMDATA,idx,(LPARAM)"*.html;*.htm;*.asp;*.asa;*.php;*.php3;*.php4;*.shtml");
idx=SendMessage(hFilter,CB_ADDSTRING,0,(LPARAM)"SQL ÆÄÀÏ");
SendMessage(hFilter,CB_SETITEMDATA,idx,(LPARAM)"*.sql");
SendMessage(hFilter,CB_SETCURSEL,Option.FilterIndex,0);
hFileTree=CreateWindow(WC_TREEVIEW, "", WS_CHILD | WS_VISIBLE |
TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT | TVS_EDITLABELS | TVS_SHOWSELALWAYS,
0,0,0,0,hWnd,(HMENU)1,g_hInst,NULL);
hFileImg=ImageList_LoadBitmap(g_hInst, MAKEINTRESOURCE(IDB_FILES), 16, 1, RGB(255,255,255));
SendMessage(hFileTree, TVM_SETIMAGELIST, (WPARAM)TVSIL_NORMAL, (LPARAM)hFileImg);
InitTree();
return 0;
case WM_COMMAND:
switch (LOWORD(wParam)) {
case 0:
switch (HIWORD(wParam)) {
case CBN_SELCHANGE:
Option.FilterIndex=SendMessage(hFilter,CB_GETCURSEL,0,0);
RefreshTree();
break;
}
break;
case IDM_FILEWND_CLOSE:
Option.bShowFileWnd=FALSE;
Relayout();
break;
case IDM_FILEWND_REFRESH:
RefreshTree();
break;
case IDM_FILEWND_HIDDEN:
Option.bShowHidden=!Option.bShowHidden;
RefreshTree();
break;
case IDM_FILEWND_BROWSE:
Option.bBrowseMode=!Option.bBrowseMode;
break;
case IDM_FILEWND_DELETE:
Node=TreeView_GetSelection(hFileTree);
GetNodePath(Node,Path);
Path[lstrlen(Path)+1]=0;
SHFILEOPSTRUCT sf;
sf.hwnd=hWnd;
sf.wFunc=FO_DELETE;
sf.pFrom=Path;
sf.pTo=NULL;
sf.fFlags=FOF_ALLOWUNDO;
sf.lpszProgressTitle="";
if (SHFileOperation(&sf)==0) {
if (sf.fAnyOperationsAborted == FALSE) {
TreeView_DeleteItem(hFileTree,Node);
}
}
break;
case IDM_FILEWND_RENAME:
Node=TreeView_GetSelection(hFileTree);
TreeView_EditLabel(hFileTree,Node);
break;
}
return 0;
case WM_NOTIFY:
hdr=(LPNMHDR)lParam;
ntv=(LPNMTREEVIEW)lParam;
ndi=(LPNMTVDISPINFO)lParam;
if (hdr->hwndFrom == hFileTree) {
switch (hdr->code) {
case TVN_ITEMEXPANDING:
if (ntv->action==TVE_EXPAND) {
if (TreeView_GetChild(hFileTree,ntv->itemNew.hItem)==NULL) {
GetNodePath(ntv->itemNew.hItem,Path);
szFilter=(TCHAR *)SendMessage(hFilter,CB_GETITEMDATA,
SendMessage(hFilter,CB_GETCURSEL,0,0),0);
bContFIF=TRUE;
FindInFiles(Path,szFilter,Option.bShowHidden ? FIF_INCHID:0,
OnFindNode,ntv->itemNew.hItem);
}
}
break;
case TVN_SELCHANGED:
if (Option.bBrowseMode) {
Node=ntv->itemNew.hItem;
TV.mask=TVIF_IMAGE;
TV.hItem=Node;
TreeView_GetItem(hFileTree,&TV);
if (TV.iImage==DGI_FILE) {
GetNodePath(Node,Path);
OpenFromFile(Path,FALSE,TRUE);
}
}
break;
case NM_DBLCLK:
Node=TreeView_GetSelection(hFileTree);
if (Node) {
TV.mask=TVIF_IMAGE;
TV.hItem=Node;
TreeView_GetItem(hFileTree,&TV);
if (TV.iImage==DGI_FILE) {
GetNodePath(Node,Path);
OpenFromFile(Path);
}
}
break;
case TVN_BEGINLABELEDIT:
for (tNode=ndi->item.hItem;tNode2=TreeView_GetParent(hFileTree,tNode);tNode=tNode2);
TV.mask=TVIF_IMAGE;
TV.hItem=tNode;
TreeView_GetItem(hFileTree,&TV);
if (tNode==ndi->item.hItem || TV.iImage != DGI_DRIVE) {
return TRUE;
} else {
return FALSE;
}
case TVN_ENDLABELEDIT:
ndi=(LPNMTVDISPINFO)lParam;
if (ndi->item.pszText == NULL)
return FALSE;
GetNodePath(ndi->item.hItem,Path);
_splitpath(Path,Drive,Dir,NULL,NULL);
wsprintf(NewPath,"%s%s%s",Drive,Dir,ndi->item.pszText);
if (MoveFile(Path,NewPath)==FALSE) {
return FALSE;
}
return TRUE;
case TVN_DELETEITEM:
if (ntv->itemOld.lParam) {
free((LPVOID)ntv->itemOld.lParam);
}
break;
}
}
return 0;
case WM_CONTEXTMENU:
POINT pt;
hMenu=LoadMenu(g_hInst, MAKEINTRESOURCE(IDR_POPUP));
hPopup=GetSubMenu(hMenu, 1);
TVHITTESTINFO ht;
ht.pt.x=LOWORD(lParam);
ht.pt.y=HIWORD(lParam);
ScreenToClient(hWnd,&ht.pt);
TreeView_HitTest(hFileTree,&ht);
TreeView_SelectItem(hFileTree,ht.hItem);
if (Option.bShowHidden) {
CheckMenuItem(hMenu, IDM_FILEWND_HIDDEN, MF_BYCOMMAND | MF_CHECKED);
} else {
CheckMenuItem(hMenu, IDM_FILEWND_HIDDEN, MF_BYCOMMAND | MF_UNCHECKED);
}
if (Option.bBrowseMode) {
CheckMenuItem(hMenu, IDM_FILEWND_BROWSE, MF_BYCOMMAND | MF_CHECKED);
} else {
CheckMenuItem(hMenu, IDM_FILEWND_BROWSE, MF_BYCOMMAND | MF_UNCHECKED);
}
if (TreeView_GetParent(hFileTree,ht.hItem)==NULL) {
EnableMenuItem(hMenu, IDM_FILEWND_DELETE, MF_BYCOMMAND | MF_GRAYED);
EnableMenuItem(hMenu, IDM_FILEWND_RENAME, MF_BYCOMMAND | MF_GRAYED);
} else {
EnableMenuItem(hMenu, IDM_FILEWND_DELETE, MF_BYCOMMAND | MF_ENABLED);
EnableMenuItem(hMenu, IDM_FILEWND_RENAME, MF_BYCOMMAND | MF_ENABLED);
}
if (LOWORD(lParam)==65535) {
pt.x=20;
pt.y=20;
ClientToScreen(hWnd,&pt);
lParam=MAKELPARAM(pt.x,pt.y);
}
TrackPopupMenu(hPopup, TPM_LEFTALIGN, LOWORD(lParam), HIWORD(lParam),
0, hWnd, NULL);
DestroyMenu(hMenu);
return 0;
case WM_SIZE:
MoveWindow(hFileTree,0,0,LOWORD(lParam),HIWORD(lParam)-26,TRUE);
MoveWindow(hFilter,0,HIWORD(lParam)-23,LOWORD(lParam),350,TRUE);
return 0;
case WM_DESTROY:
ImageList_Destroy(hFileImg);
return 0;
}
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
}
¿ÏÀüÈ÷ µ¶¸³µÈ ±â´ÉÀ» ±¸ÇöÇÏ´Â ÄÚµåµéÀ̹ǷΠ±âÁ¸ÀÇ ÄÚµå´Â °ÅÀÇ ¼öÁ¤ÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ´Ü, ÇÁ·Î±×·¥À» Á¾·áÇÒ ¶§ ÃÖÈÄ ¼±ÅÃµÈ Æú´õÀÇ À§Ä¡¸¦ ÀúÀåÇÏ°í ´Ù½Ã Àоî¿À´Â Äڵ常 ÀÛ¼ºÇÏ¸é µÈ´Ù. OnDestroy¿¡ ´ÙÀ½ Äڵ带 Ãß°¡ÇÑ´Ù.
void OnDestroy(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
TCHAR LastFolder[MAX_PATH];
....
GetCurrentFolder(LastFolder);
SHRegWriteString(SHCU,KEY"Setting","LastFolder",LastFolder);
}
GetCurrentFolder ÇÔ¼ö·Î ÆÄÀÏâ¿¡ ¼±ÅÃµÈ ¸¶Áö¸· Æú´õÀÇ À§Ä¡¸¦ ·¹Áö½ºÆ®¸®¿¡ ÀúÀåÇصξú´Ù. ÀÌ °æ·Î´Â ÃʱâÈ°¡ ¿Ï·áµÈ ½ÃÁ¡ÀÎ OnTimer¿¡¼ ´Ù½Ã ÀÐÇôÁø´Ù.
void OnTimer(HWND hWnd,WPARAM wParam,LPARAM lParam)
{
....
switch (wParam) {
case 100:
....
SHRegReadString(SHCU,KEY"Setting","LastFolder","",Path,MAX_PATH);
GotoFolderInTree(Path);
break;
}
}
·¹Áö½ºÆ®¸®¿¡ ÀúÀåµÈ ÃÖÈÄ Æú´õ À§Ä¡¸¦ ÀÐ¾î ±× À§Ä¡¸¦ ´Ù½Ã ã¾Æ°¡µµ·Ï Çß´Ù. ÀÌ ÄÚµå´Â ÆÄÀÏâÀÇ WM_INITDIALOG¿¡ À־ »ó°ü¾ø´Ù. ±×·¯³ª ´ÙÀ½¿¡ ÀÛ¼ºÇÒ ÇÁ·ÎÁ§Æ® ±â´ÉÀ» Áö¿øÇϱâ À§ÇØ OnTimer¿¡ ¹Ì¸® ÀÛ¼ºÇصξú´Ù.