|
zeterm 님이 쓰신 글 :
:
: 파일오픈은 있는데... 폴더오픈은 없는지요?
다음 소스를 참고하세요..
int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
if(uMsg==BFFM_INITIALIZED)
{
if(lstrlen((char*)lpData))
SendMessage(hwnd, BFFM_SETSELECTION, true, lpData);
}
return 0;
}
//---------------------------------------------------------------------------
String __fastcall BrowseFolder(String Title, String Folder)
{
BROWSEINFO Info;
LPITEMIDLIST IDList;
char Result[1024]="";
char s[256];
memset(&Info, 0, sizeof(Info));
Info.hwndOwner=Application->Handle;
Info.pidlRoot=NULL;
lstrcpy(s, Title.c_str());
Info.lpszTitle=s;
Info.ulFlags=BIF_RETURNONLYFSDIRS;
if(Folder.Length())
lstrcpy(Result, Folder.c_str());
Info.lParam=(UINT)Result;
Info.lpfn=BrowseCallbackProc;
IDList=SHBrowseForFolder(&Info);
if(IDList)
{
memset(Result, 0, sizeof(Result));
SHGetPathFromIDList(IDList, Result);
CoTaskMemFree(IDList);
}else
lstrcpy(Result,"");
return String(Result);
}
|