#include <string>
#include <iostream>
#include <shlobj.h>
#include <tchar.h>
using namespace::std;
int main() {
string strInitFolder = _T("");
TCHAR szPath[MAX_PATH] = _T("");
LPMALLOC lpMalloc = NULL;
string strFolder = _T("");
BROWSEINFO sInfo;
LPITEMIDLIST lpidlBrowse = NULL;
if (::SHGetMalloc(&lpMalloc) != NOERROR)
return 0;
::ZeroMemory(&sInfo, sizeof(BROWSEINFO));
sInfo.pidlRoot = 0;
sInfo.pszDisplayName = szPath;
sInfo.lpszTitle = _T("请选择您需要的目的文件夹:");
sInfo.ulFlags = BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS;
sInfo.lpfn = NULL;
// 显示文件夹选择对话框
lpidlBrowse = ::SHBrowseForFolder(&sInfo);
if (lpidlBrowse != NULL) {
// 取得文件夹名
if (::SHGetPathFromIDList(lpidlBrowse, szPath)) {
strFolder = szPath;
cout<<_T("选择的文件夹为:")<<endl;
cout<<strFolder<<endl;
}
}
if (lpidlBrowse != NULL) {
::CoTaskMemFree(lpidlBrowse);
}
lpMalloc->Release();
system("PAUSE");
return 1;
}