2007.3.7--C++学习日记--MFC--用VC调用Shell中的目录浏览对话框
来源:互联网 发布:杰克逊总统知乎 编辑:程序博客网 时间:2024/05/22 15:44
函数原型为:
LPITEMIDLIST SHBrowseForFolder(LPBROWSEINFO lpbi);
其中LPBROWSEINFO为BROWSEINFO结构的指针。
BROWSEINFO结构如下:
typedef struct _browseinfo {
HWND hwndOwner;
LPCITEMIDLIST pidlRoot;
LPSTR pszDisplayName;
LPCSTR lpszTitle;
UINT ulFlags;
BFFCALLBACK lpfn;
LPARAM lParam;
int iImage;
} BROWSEINFO;
调用例子如下:
void CMakemifDlg::OnRecPcpath()
{
CString sFolderPath;
BROWSEINFO bi;
char Buffer[MAX_PATH];
//初始化入口参数bi开始
bi.hwndOwner = NULL;
bi.pidlRoot = NULL;
bi.pszDisplayName = Buffer;//此参数如为NULL则不能显示对话框
bi.lpszTitle = "修改接收路径";
bi.ulFlags = 0;
bi.lpfn = NULL;
bi.iImage=IDI_ICON2;
//初始化入口参数bi结束
LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);//调用显示选择对话框
if(pIDList)
{
SHGetPathFromIDList(pIDList, Buffer);
//取得文件夹路径到Buffer里
sFolderPath = Buffer;//将路径保存在一个CString对象里
}
LPMALLOC lpMalloc;
if(FAILED(SHGetMalloc(&lpMalloc))) return;
//释放内存
lpMalloc->Free(pIDList);
lpMalloc->Release();
}
Another Example:
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();
}
- 2007.3.7--C++学习日记--MFC--用VC调用Shell中的目录浏览对话框
- 用VC调用Shell中的目录浏览对话框
- 用VC调用Shell中的目录浏览对话框
- 用VC调用Shell中的目录浏览对话框
- 用VC调用Shell中的目录浏览对话框
- 用VC调用Shell中的目录浏览对话框
- MFC学习日记十:Mfc对话框编程控件的调用
- MFC 浏览目录的对话框 或 选择目录的对话框
- VB.NET 中调用浏览目录对话框
- vc学习历程(7)--文件浏览对话框
- VC实现在浏览目录对话框中选择目录
- VC++中的目录选择对话框
- 在VC++中的MFC利用一个dialoge对话框中按钮调用另一个dialoge对话框
- MFC的浏览对话框
- 用VC调用对话框
- 用VC++6实现文件夹浏览对话框
- 浏览目录对话框
- MFC学习日记九:Mfc对话框编程CDialog
- MaxLengthTextField
- CLR的终结操作Finalizer
- 可选边框的Border
- VBA中关IP地址正确性的检查
- birt简单步骤
- 2007.3.7--C++学习日记--MFC--用VC调用Shell中的目录浏览对话框
- 用MS.NET开发三层结构应用程序
- 可以显示横向ScrollBar的下拉框ComboBox
- 刚才写了一堆,怎么不见了
- js submit() 对象不支持此属性或方法
- 急急急!!!!!!!!!!帮助我拿下意见,不胜感激!
- 南京华为项目经验总结(大方向)
- htc
- 环境部署问题总结