打开目录选择对话框可以使用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(); }
本文介绍如何使用SHBrowseForFolder函数实现目录选择对话框,并通过BROWSEINFO结构体及回调函数BrowserCallbackProc预设默认路径。
1万+

被折叠的 条评论
为什么被折叠?



