文件浏览对话框

简介: 这次在工作中碰到了文件浏览对话框,以前的时候也做过,不过没有做过文件浏览对话框同时实现打开文件,和打开文件夹两种功能的同时实现。通过查阅资料,一上午一开始使用SHBrowseForFolder()而后有使用CFileDialog,一开始以为SHBrowseForFolder只能用于文件夹,CFileDialog可以用于文件和文件夹的打开。

这次在工作中碰到了文件浏览对话框,以前的时候也做过,不过没有做过文件浏览对话框同时实现打开文件,和打开文件夹两种功能的同时实现。通过查阅资料,一上午一开始使用SHBrowseForFolder()而后有使用CFileDialog,一开始以为SHBrowseForFolder只能用于文件夹,CFileDialog可以用于文件和文件夹的打开。但事实证明SHBrowseForFolder()是多么的好用和功能强大。只需要给BROWSEINFO.ulFlag添加上BIF_BROWSEINCLUDEFILE就可以了。而网上的CFileDialog说通过继承可以实现却很难搞定,至少找了许久没找到实例。但SHBrowseForFolder()的强大让我们不用去管CFileDialog。

 

在SHBrowseForFolder()中我们通过设定上回调函数,可以让我们的浏览对话框实现启动的时候显示上次浏览的位置。我们所需要做的,就是处理回调函数中的BFFM_INITIALIZED消息,在其中我们使用SendMessage发送BFFM_SETSELECTED,wParam表示lParam的指针式字符串指针,还是item id list指针。lParam表示字符串指针或者item id list指针。举例,我们要设置浏览对话框一开始就定格在c盘符下的Program Files,我们可以有两种方法。

第一种:SendMessage( hwnd, BFFM_SETSELECTED, TRUE, ( LPARAM )"c:\\program files" );

第二种: SendMessage( hwnd, BFFM_SETSELECTED, FALSE, ( LPARAM )pidlRoot );其中pidlRoot 是上述路径的id列表指针。我们通过SHCreateItemFromParseName(似乎是,由于这个没有用过,所以不清楚)

 

另外也可以实现一些其他的功能,例如验证文件有效性等等。需要做的就是熟悉回调函数中的相关消息,和消息中对应参数的含义。

 

相关文章
|
2月前
|
安全 Shell
关于双击桌面上的IE图标却显示“打开方式”对话框的解决办法
关于双击桌面上的IE图标却显示“打开方式”对话框的解决办法
若依的目录结构,有三种一种目录菜单,目录菜单,展开的都是页面的功能,不会跳转,第二种页面菜单,目录里面的一点击都是展示页面,第三种是按钮菜单,点击之后
若依的目录结构,有三种一种目录菜单,目录菜单,展开的都是页面的功能,不会跳转,第二种页面菜单,目录里面的一点击都是展示页面,第三种是按钮菜单,点击之后
tab栏切换制作(点击那一栏显示那一栏的内容,其他栏的内容隐藏)
tab栏切换制作(点击那一栏显示那一栏的内容,其他栏的内容隐藏)
tab栏切换制作(点击那一栏显示那一栏的内容,其他栏的内容隐藏)
Confluence 6 移动浏览的面板 —— 你首先看到的
Confluence 6 移动浏览的面板 —— 你首先看到的
229 0
Confluence 6 移动浏览的面板 —— 你首先看到的