#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 0;
}