打开路径选择对话框
来源:互联网 发布:网络投票公司 编辑:程序博客网 时间:2024/05/16 11:36
一般的OpenDialog,得到的是文件夹名称,如果要想实现下面的效果,得到选择的路径,这个时候SHBrowseForFolder就派上用场了。
下面的例子中返回路径,如果没有选,返回"",选择了路径,则返回选择的路径。
char *GetPath(HWND hWnd,char *pBuffer)
{
BROWSEINFO bf;
LPITEMIDLIST lpitem;
memset(&bf,0,sizeof BROWSEINFO);
bf.hwndOwner=hWnd;
bf.lpszTitle="选择路径";
bf.ulFlags=BIF_RETURNONLYFSDIRS; //属性你可自己选择
lpitem=SHBrowseForFolder(&bf);
if(lpitem==NULL) //如果没有选择路径则返回 0
return "";
//如果选择了路径则复制路径,返回路径长度
SHGetPathFromIDList(lpitem,pBuffer);
return pBuffer;
}
下面我们来解释一下这个函数用到的一些值的含义。
1. BROWSEINFO
它是一个结构, 原型是
typedef struct _browseinfo {
HWND hwndOwner; // 弹出的dialog的父窗体的句柄
LPCITEMIDLIST pidlRoot; // 指向一个ITEMIDLIST的指针,我们会在后边介绍ITEMIDLIST结构,可空
LPSTR pszDisplayName; // 指向一个buffer,这个buffer用来存放用户选中的目录,buffer的size为MAX_PATH
LPCSTR lpszTitle; //指向一个非空的string,用来显示树目录之上的指示信息
UINT ulFlags; // 指出了显示的文件夹的类型
BFFCALLBACK lpfn; //简单的记为NULL
LPARAM lParam; // 当lpfn不为空时,把dialogbox的值传给回调函数lpfn
int iImage; // 系统的图标list的索引,当用户选中目录的时候,得到这个索引
} BROWSEINFO, *PBROWSEINFO, *LPBROWSEINFO;
ulFlags的可能取值为:
BIF_BROWSEFORCOMPUTER ——只返回"我的电脑",当选中"我的电脑"之外的目录时,OK键为灰色
BIF_BROWSEFORPRINTER ——只返回"打印机",当选中"打印机"之外的目录时,OK键为灰色
BIF_DONTGOBELOWDOMAIN ——不包括"网上邻居"
BIF_RETURNFSANCESTORS ——只返回"我的文件",当选中"我的文件"之外的目录时,OK键为灰色
BIF_RETURNONLYFSDIRS ——同上
BIF_STATUSTEXT ——Includes a status area in the dialog box. The callback can set the status text by sending messages to the dialog box.
2. ITEMIDLIST
是一个结构,指明了默认浏览的根文件夹的位置,可以为空,那样的话,默认为桌面文件夹的文件目录.
原型为
typedef struct _ITEMIDLIST
{
SHITEMID mkid; // list of item identifers
} ITEMIDLIST, * LPITEMIDLIST;
typedef const ITEMIDLIST * LPCITEMIDLIST;
3. SHGetPathFromIDList函数
原型是
WINSHELLAPI BOOL WINAPI SHGetPathFromIDList(
LPCITEMIDLIST pidl,
LPSTR pszPath
);
反正记住配套使用就行了,哈哈~~
如果是在bcb环境中使用,那么如果提示不能识别BROWSEINFO,则需加入头文件#i nclude <ShellAPI.h>
,然后在对应的.cpp的include之前#define NO_WIN32_LEAN_AND_MEAN
- 打开路径选择对话框
- Cocoa 选择保存路径对话框 和 选择打开文件对话框
- 如何打开保存路径选择对话框
- 利用Qt对话框选择文件打开路径
- asp.net打开对话框选择文件路径
- VC打开文件对话框与保存文件路径选择对话框
- 打开选择文件对话框时指定初始选择路径
- 调用系统控件,打开选择文件或路径的对话框
- c#打开对话框选择后输出文件路径文件名
- EXCEL-VBA:调用打开文件夹对话框,选择路径
- 打开文件夹选择对话框
- 打开->选择文件对话框
- 打开文件夹选择对话框
- 打开选择文件对话框
- 打开路径对话框
- MFC 路径选择对话框
- 打开文件对话框选择文件位置,及给定文件路径来打开文件
- 如何用VBA打开选择文件和选择路径的对话框
- 传智播客Hibernate视频教程学习笔记25
- 说话要用脑子
- 问题一:不能创建web应用程序
- iBATIS教程之快速入门浅析
- 软中断/tasklet/工作队列
- 打开路径选择对话框
- Google搜索指令大全(最新整理)
- PHP中解决时间相差8小时的问题,即时间显示与本机时间不一样的问题
- C++Builder非可视组件的消息处理技巧
- firebird数据库的修复
- equals(Object) 与 == 的区别
- 手把手教你把Vim改装成一个IDE编程环境(图文)
- 现代的网络安全要求什么样的交换机?
- 三层结构与MVC模式的区别