这里主要介绍使用SHBrowseForFolder时,如何设置默认路径。还没找到更好的方法,使用的是回调函数
//--------------------------------------------------------------------------------------------------------------------------------
//在此函数里设置默认路径,这里取的是应用程序的路径
int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
if (uMsg == BFFM_INITIALIZED)
{
TCHAR m_lpszInitialPath[256] = _T("");
GetCurrentDirectory(256, m_lpszInitialPath);
if (m_lpszInitialPath != NULL)
{
SendMessage(hwnd, BFFM_SETSELECTION, (WPARAM)TRUE, (LPARAM)m_lpszInitialPath);
}
}
return 0;
}
//--------------------------------------------------------------------------------------------------------------------------------
//按键响应事件定义
void CFileConverterDlg::OnBnClickedButtonOpenTarget()
{
WCHAR szDisplayName[MAX_PATH] = {0};
CString newPath;
BROWSEINFO bf;
LPITEMIDLIST lpitem;
memset(&bf, 0, sizeof(BROWSEINFO));
bf.hwndOwner = this->m_hWnd;
bf.lpszTitle = _T("请选择文件保存路径");
bf.ulFlags = BIF_RETURNFSANCESTORS;
bf.lpfn = BrowseCallbackProc;
lpitem = SHBrowseForFolder(&bf);
if(lpitem == NULL) //如果没有选择路径则返回
{
return;
}
SHGetPathFromIDList(lpitem, szDisplayName);
USES_CONVERSION;
newPath = W2A(szDisplayName);
m_TargetFile.SetSel(0, -1);
m_TargetFile.ReplaceSel(newPath);
UpdateData(FALSE);
}
//--------------------------------------------------------------------------------------------------------------------------------