c++中通用文件对话框和通用项对话框的主要区别是啥?

Posted

技术标签:

【中文标题】c++中通用文件对话框和通用项对话框的主要区别是啥?【英文标题】:what is the main difference between Common File Dialog and Common Item Dialog in c++?c++中通用文件对话框和通用项对话框的主要区别是什么? 【发布时间】:2014-11-21 10:08:50 【问题描述】:

我的问题是:

Common File Dialog 和 Common Item Dialog 的主要区别是什么?

MSDN 刚刚说:

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

但它没有解释它们之间的更改日志或主要区别是什么?

感谢您的帮助。

【问题讨论】:

GetOpenFileName() => IFileOpenDialog。主要的“区别”是从 C 风格的 api 到 COM api。很大的不同。但有重大改进。 @HansPassant:感谢您的评论。你看到我更新的帖子了吗? ***.com/questions/26817372/… @HansPassant 你的评论让我很好奇,COM api 如何/为什么比 C 风格的 api 更好? 【参考方案1】:

Common File Dialog 只是一个自定义的 DialogBog。另一方面,Common Item Dialog 是一个完整的 COM 服务器。

微软的文档说:

Windows Vista 中的通用项对话框实现与早期版本中提供的实现相比具有几个优点:

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

只是简单的低级 Win32 程序更难使用。

【讨论】:

以上是关于c++中通用文件对话框和通用项对话框的主要区别是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在PCB板中,过孔和通孔各指啥?它们之间的区别是啥?哪位高手知道可否赐教啊?

消息框和对话框的区别是?

能不能通过vb调出一个选择文件的对话框?

Kotlin实现Android项目中通用loading对话框

DLL文件是啥呀,它有啥作用?

QT对话框中show和exec的区别