CHAR* cFolderPathT = new CHAR[256];
memset(cFolderPathT, 0, 256);
BROWSEINFO bRows;
LPITEMIDLIST pIDL = NULL;
bRows.hwndOwner = NULL;
bRows.pidlRoot = NULL;
bRows.pszDisplayName = cFolderPathT;
bRows.lpszTitle = _T("请选择存储目录");
bRows.ulFlags = BIF_STATUSTEXT|BIF_VALIDATE|BIF_EDITBOX;
bRows.lpfn = NULL;
bRows.lParam = 0;
bRows.iImage = 0;
pIDL = SHBrowseForFolder(&bRows);
if(NULL == pIDL)
return ;
if(SHGetPathFromIDList(pIDL, cFolderPathT))
{
//手动释放pidl的内存
LPMALLOC lpMalloc;
if(FAILED(SHGetMalloc(&lpMalloc)))
return ;
lpMalloc->Free(pIDL);
lpMalloc->Release();
pIDL = NULL;
}
//转变成wchar_t*
size_t newsize = strlen(cFolderPathT) + 1;
wchar_t * wcstring = new wchar_t[newsize];
size_t convertedChars = 0;
mbstowcs_s(&convertedChars, wcstring, newsize, cFolderPathT, _TRUNCATE);
//转变成CString
CString szFolderPath(wcstring);