|
|
在VC中做一个选择文件夹的对话框 |
|
|
作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站 |
VC中没有现成的函数来选择一个文件夹,但这是经常会用到的,怎么办? 自动动手,丰衣足食!
使用SHBrowseForFolder,代码如下:
#include <Shlobj.h> int SelFolder(HWND hParent, CString &strFolder) { strFolder.Empty(); LPMALLOC lpMalloc; if (::SHGetMalloc(&lpMalloc) != NOERROR) return 0; char szDisplayName[_MAX_PATH]; char szBuffer[_MAX_PATH]; BROWSEINFO browseInfo; browseInfo.hwndOwner = hParent; browseInfo.pidlRoot = NULL; // set root at Desktop browseInfo.pszDisplayName = szDisplayName; browseInfo.lpszTitle = "Select a folder"; browseInfo.ulFlags = BIF_RETURNFSANCESTORS|BIF_RETURNONLYFSDIRS; browseInfo.lpfn = NULL; browseInfo.lParam = 0; LPITEMIDLIST lpItemIDList; if ((lpItemIDList = ::SHBrowseForFolder(&browseInfo)) != NULL) { // Get the path of the selected folder from the item ID list. if (::SHGetPathFromIDList(lpItemIDList, szBuffer)) { // At this point, szBuffer contains the path the user chose. if (szBuffer[0] == '\0') return 0; // We have a path in szBuffer! Return it. strFolder = szBuffer; return 1; } else return 1; // strResult is empty lpMalloc->Free(lpItemIDList); lpMalloc->Release(); } return 1; }
|
|
相关文章:相关软件: |
|