c++ - C++中的通用文件对话框和通用项目对话框之间的主要区别是什么?

标签 c++ windows

我的问题是:

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

MSDN 只是说:

Starting with Windows Vista, the Common Item Dialog supersedes the older Common File Dialog when used to open or save a file.We recommend that you use the Common Item Dialog API instead of the Common File Dialog API.

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

感谢您的帮助。

最佳答案

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

Microsoft 的文档说:

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

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

简单地说,它更难从简单的低级 Win32 程序中使用。

关于c++ - C++中的通用文件对话框和通用项目对话框之间的主要区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27058807/

相关文章:

C++检查键是否被按下,而不是按住

windows - 支持目前在 32 位操作系统中工作的 64 位操作系统

java - 如何使用 Eclipse 在 .JAR 文件中包含特定于平台的 native 库?

c++ - opengl es 2.0 c++ 中的 glDrawBuffers

c++ - 我可以使用多线程调用一个简单的函数几次吗? C++11

C++ printf 只出现在最后

c++ - 浏览器支持 HTTP 摘要认证中的 nextnonce 指令

c++ - 没有明确范围的强类型枚举?

c++ - Texture2D : Error uploading compressed texture level: 0. glError: 0x0500

Python,如何检查Windows应用程序进度