直接上函数:
</pre><pre name="code" class="cpp">BOOL BrowseDir(CString &strDir, CString strTitle, int nImgID)
{
BROWSEINFO bi;
TCHAR Buffer[MAX_PATH];
LPITEMIDLIST pidl = NULL;
SHGetSpecialFolderLocation(NULL, CSIDL_DRIVES, &pidl);
bi.hwndOwner = NULL;
bi.pidlRoot = pidl;
bi.pszDisplayName = Buffer;
bi.lpszTitle = strTitle;
bi.ulFlags = BIF_USENEWUI;
bi.lpfn = NULL;
bi.iImage = nImgID;
LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);
if(pIDList)
{
SHGetPathFromIDList(pIDList, Buffer);
strDir = Buffer;
}
else
{
FreeITEMIDLIST(pidl);
return FALSE;
}
FreeITEMIDLIST(pidl);
pidl = NULL;
FreeITEMIDLIST(pIDList);
pIDList = NULL;
return TRUE;
}
void FreeITEMIDLIST(LPITEMIDLIST pidl)
{
IMalloc *pIMalloc;
SHGetMalloc(&pIMalloc);
if(pIMalloc != NULL)
{
pIMalloc->Free(pidl);
pIMalloc->Release();
}
}
用法:
CString strDir;
if(BrowseDir(strDir, _T("选择文件夹"), IDR_MAINFRAME))
{
//strDir
}