Windows文件夾選擇對話框


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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章