原文地址:点击打开链接
弹出选择对话框可以应用在很多的地方,代码如下:
TCHAR szPath[MAX_PATH]={0};
LPITEMIDLIST pitem;
BROWSEINFO info;
::ZeroMemory(&info,sizeof(info));
info.hwndOwner=this-> m_hWnd;
info.lpszTitle=_T( "Choose the Folder: ");
info.ulFlags=BIF_USENEWUI;
info.pszDisplayName = szPath;
//info.lpfn=BrowseCallbackProc;
//info.lParam= long(&DefaultDir);
if(pitem=::SHBrowseForFolder(&info))
{
::SHGetPathFromIDList(pitem,szPath);
UpdateData(FALSE);
}
上面的代码弹出的对话框是用户默认的目录,要想指定弹出的目录,需要将上面注释的两行代码去掉,其中BrowseCallbackProc是一个回调函数,DefaultDir是你需要指定的弹出目录,BrowseCallbackProc代码如下:
int CALLBACK BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lParam,LPARAM lpData)
{
switch(uMsg)
{
case BFFM_INITIALIZED: //初始化消息
::SendMessage(hwnd,BFFM_SETSELECTION,TRUE,lpData);
break;
case BFFM_SELCHANGED: //选择路径变化,
{
char curr[MAX_PATH];
SHGetPathFromIDList((LPCITEMIDLIST)lParam,curr);
::SendMessage(hwnd,BFFM_SETSTATUSTEXT,0,(LPARAM)curr);
}
break;
default:
break;
}
return 0;
}