文件浏览对话框

简介: 这次在工作中碰到了文件浏览对话框,以前的时候也做过,不过没有做过文件浏览对话框同时实现打开文件,和打开文件夹两种功能的同时实现。通过查阅资料,一上午一开始使用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(似乎是,由于这个没有用过,所以不清楚)

 

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

 

相关文章
|
4月前
怎么添加文章目录,然后点击目录跳转到对应的内容目录标题+怎么打开MarkDown编辑
怎么添加文章目录,然后点击目录跳转到对应的内容目录标题+怎么打开MarkDown编辑
31 0
tab栏切换制作(点击那一栏显示那一栏的内容,其他栏的内容隐藏)
tab栏切换制作(点击那一栏显示那一栏的内容,其他栏的内容隐藏)
tab栏切换制作(点击那一栏显示那一栏的内容,其他栏的内容隐藏)
Confluence 6 移动浏览的面板 —— 你首先看到的
Confluence 6 移动浏览的面板 —— 你首先看到的
203 0
Confluence 6 移动浏览的面板 —— 你首先看到的
Confluence 6 编辑站点欢迎消息使用模板编辑器的小提示
站点欢迎消息是一个模板而不是一个页面,所以你需要使用模板编辑器来对你的消息进行编辑。 你可以和在你 Confluence 中其他页面中一样,在站点欢迎消息模板中添加文本,连接和宏。
1033 0