Common Files对话框和Common Item对话框在c ++中的主要区别是什么?

我的问题是:

通用文件对话框和通用项目对话框的主要区别是什么?

MSDN只是说:

从Windows Vista开始,当用于打开或保存文件时,Common Item对话框将取代旧的Common File对话框。我们build议您使用Common Item Dialog API而不是Common File Dialog API。

但是没有说明它们之间的变化logging或主要区别是什么?

感谢任何帮助。

通用文件对话框只是一个自定义的DialogBog。 另一方面,Common Item对话框是一个完整的COM服务器。

微软的文档说:

在Windows Vista中找到的Common Item Dialog实现比在早期版本中提供的实现提供了几个优点:

  • 支持通过IShellItem直接使用Shell命名空间,而不是使用文件系统路径。
  • 启用对话框的简单定制,例如在OK按钮上设置标签,而不需要钩子程序。
  • 通过添加一组数据驱动的控件来支持对话框的更广泛的自定义,这些控件在没有Win32对话框模板的情况下运行。 这个定制方案从UI布局中释放调用过程。 由于对话框设计的任何更改都会继续使用此数据模型,因此对话框实现不会绑定到对话框的特定当前版本。
  • 支持对话内事件的调用者通知,如选择更改或文件类型更改。 还使调用进程能够钩住对话中的某些事件,如解析。
  • 引入新的对话框功能,例如将“来电者指定的位置”添加到“位置”栏。
  • 在“保存”对话框中,开发人员可以利用Windows Vista Shell的新元数据功能。

简单来说,使用一个简单的低级别的Win32程序就比较困难。