16,473
社区成员
发帖
与我相关
我的任务
分享
static int CALLBACK BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
{
switch(uMsg)
{
case BFFM_INITIALIZED:
{
CString strPath = AfxGetApp()->GetProfileString(_T("Save"), _T("Path"));
::SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM)strPath.GetBuffer(0));
}
break;
default: break;
}
return 0;
}
TCHAR szFilePath[MAX_PATH] = {0};
BROWSEINFO bsInfo;
::ZeroMemory(&bsInfo, sizeof(BROWSEINFO));
bsInfo.hwndOwner = this->m_hWnd;
bsInfo.pszDisplayName = szFilePath;
bsInfo.ulFlags = BIF_RETURNFSANCESTORS|BIF_RETURNONLYFSDIRS;
bsInfo.lpfn = BrowseCallbackProc;
LPITEMIDLIST pIDList = SHBrowseForFolder(&bsInfo);
if(pIDList == NULL)
return 0;
SHGetPathFromIDList(pIDList, szFilePath);
LPMALLOC lpMalloc;
if(FAILED(SHGetMalloc(&lpMalloc)))
return 0;
lpMalloc->Free(pIDList);
AfxGetApp()->WriteProfileString(_T("Save"), _T("Path"), szFilePath);