Vista 风格文件选择对话框笔记

windows从 vista 开始后面操作系统提供新文件选择打开(保存)对话框,文件选择视图与windows资源管理器保持一致,比如上面显示路径可编辑及搜索编辑框,左侧显示树视图,右侧显示预览窗口等。

 

Vista之前使用 GetOpenFileName,GetSaveFileName函数来启动打开保存文件对话框并支持hook来扩展文件选择对话框的功能,比如修改打开(或保存)按钮文字,获得文件选择事件等等,修改麻烦但自定义比较灵活。

 

 

Vista 风格文件选择对话框提供全新封装的com接口来操作文件选择对话框。

IFileOpenDialog 和IFileSaveDialog 继承于 IFileDialog

 

接口的基本使用参考:http://www.cnblogs.com/dflying/archive/2007/03/23/685540.html

                            http://www.tuicool.com/articles/r6fmyi

 

有这样一个需求,要求在文件打开对话框中同时选择文件和文件夹发送,接口提供了 SetOptions 方法可设置多选标记同时选择文件和文件夹,在提供IFileOpenDialog 接口中有 GetResult, GetResults, GetSelectedItems分别能得到单个文件(文件选择对话框没有设置多选标记时)、得到多个文件集合,得到文件夹和文件集合。

我的需求要能同时选择文件和文件夹只能使用GetSelectedItems方法,然而这个方法存在一个问题,当选择多个文件或同时选择文件和文件夹都能拿到正确的集合,但如果只多选文件夹就无法得到文件夹集合,不知道这个算不算bug。

如果是使用 vista之前系统风格对话框即使用GetOpenFileName的对话框因为可以设置hook,而comdlg 又提供一些通用方法在收到用户选择改变事件时能拿到用户选择的文件列表可自义程度高是能满足需求的。使用新风格的IFileDialogEvents接口可以拿到用户选择的事件(注:在这个事件处理中调用GetSelectedItems也有小bug),但没有找到通用的方法拿到用户选择的文件项内容,即使可以也一样相当麻烦。

原本准备放弃,因需求还要求能设置视图类型为大图标,在查找资料时发现可以把文件选择对话框窗口当作shell窗口来看,有IFolderView2,可以通过 IFileDialog query 到IServiceProvider 再 query 到IShellBrowser,就可以query到IFolderView2。

代码可参考:http://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/370a67d8-1ac8-4fd9-bfdf-c56feb0676f8/how-to-set-ifiledialog-default-mode?forum=windowsuidevelopment

 

其中有 GetSelection 方法可以在任何情况下获得用户选中的文件和文件夹列表。这样可以使用IFolderView2的GetSelection取代IFileOpenDialog 接口来获得文件和文件夹列表,这样同时选择文件和文件夹发送的需求得以实现。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
超声随心所欲Vista版数据库文件是超声随心所欲软件在Vista操作系统上所使用的数据库文件。数据库文件是用于存储和管理大量数据的文件,它能够提供高效的数据检索和存储功能,使得软件能够更加快速地响应用户的操作。 超声随心所欲Vista版数据库文件通常使用一种被广泛采用的数据库管理系统来创建和管理,比如常见的SQL Server或者Access。这些数据库管理系统能够提供强大的数据管理和操作能力,使得用户能够方便地进行数据的添加、修改和删除等操作。 超声随心所欲Vista版数据库文件中包括了软件所需的各种数据信息,比如病人的基本信息、医生的诊断结果、检查报告等。这些数据信息被组织和存储在数据库中的表格中,每个表格对应一个特定的数据类型。用户可以通过软件提供的界面,进行数据的查询和修改等操作,以满足不同的需求。 超声随心所欲Vista版数据库文件的优势在于支持Vista操作系统的特性和功能,能够很好地适应Vista系统的特点。这样用户在使用该软件进行超声检查和诊断时,便可以充分利用Vista系统的优势和便利性,提高工作效率和准确性。 总之,超声随心所欲Vista版数据库文件是一种针对Vista操作系统开发的数据库文件,它能够高效地存储和管理超声随心所欲软件所需的各类数据信息,为用户提供方便快捷的数据操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值