您的位置:首页 > 其它

VC打开一个目录选择对话框,并设置初始化目录

2010-11-15 11:40 330 查看
打开目录选择对话框可以使用SHBrowseForFolder函数来实现,

默认的路径是我的电脑,如果需要自己设置一个默认路径的话,则需要填充BROWSEINFO里面的回调函数

在这里使用BrowserCallbackProc,初始化的时候给目录选择对话框发消息,选中预先设定的路径.

 

 

 

 

//////////////////////////////////////////////////////////////////////////
int   CALLBACK   BrowserCallbackProc
(
HWND   hWnd,
UINT   uMsg,
LPARAM   lParam,
LPARAM   lpData
)
{
switch   (   uMsg   )
{
case   BFFM_INITIALIZED:
::SendMessage(hWnd, BFFM_SETSELECTION, 1, (long)szInitPath);
break;
default:
break;
}
return   0;
}

//////////////////////////////////////////////////////////////////////////
void CGetFileListDlgDlg::OnOK()
{
// TODO: Add extra validation here
BROWSEINFO bi;
TCHAR szSearch[MAX_PATH];
LPITEMIDLIST lpItemRoot;

ZeroMemory(&bi, sizeof(bi));
//	ZeroMemory(szInitPath, MAX_PATH);
ZeroMemory(szSearch, MAX_PATH);

bi.hwndOwner = m_hWnd;
bi.pidlRoot = NULL;
bi.pszDisplayName = szInitPath;
bi.lpszTitle = TEXT("请选择你要枚举的目录:");
bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_EDITBOX;
bi.lpfn = BrowserCallbackProc;

lpItemRoot = SHBrowseForFolder(&bi);
if (lpItemRoot)
{
SHGetPathFromIDList(lpItemRoot, szInitPath);
GetFileList(szInitPath);
}
//CDialog::OnOK();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  validation path callback bi