64,637
社区成员
发帖
与我相关
我的任务
分享
void CSampleDlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
TCHAR szPath[MAX_PATH];
ZeroMemory(szPath, sizeof(szPath));
LPITEMIDLIST pItemID;
SHILCreateFromPath(_T("D:\\"), &pItemID, NULL);
BROWSEINFO bi;
ZeroMemory(&bi,sizeof(BROWSEINFO));
bi.hwndOwner = m_hWnd;
bi.pidlRoot = pItemID;
bi.pszDisplayName = szPath;
bi.lpszTitle = _T("请选择目录:");
//弹出选择目录对话框
LPITEMIDLIST lp = SHBrowseForFolder(&bi);
if(lp && SHGetPathFromIDList(lp, szPath))
{
CString str;
str.Format(_T("选择的目录为 %s"), szPath);
AfxMessageBox(str);
}
else
{
AfxMessageBox(_T("无效的目录,请重新选择"));
}
CoInitialize(NULL);
HRESULT hr;
IMalloc * pMalloc = NULL;
hr = SHGetMalloc(&pMalloc);
if(FAILED(hr))
{
AfxMessageBox(_T("系统函数调用出错"));
}
//利用IMalloc释放ITEMIDLIST
pMalloc->Free((void*)lp);
lp = NULL;
pMalloc->Release();
pMalloc = NULL;
}
HRESULT SHGetFolderPath( HWND hwndOwner,
int nFolder,
HANDLE hToken,
DWORD dwFlags,
LPTSTR pszPath
);