在VC中做一个选择文件夹的对话框

王朝vc·作者佚名  2006-01-09
宽屏版  字体: |||超大  

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;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有