【发布时间】:2012-02-08 13:10:17
【问题描述】:
我看到一些程序使用自定义的打开/保存文件对话框,它们在那里添加了一些额外的按钮。
我该怎么做?
请注意,我想使用基本的打开/保存对话框,所以我不必重新创建它们,因此保留操作系统语言中的按钮。我只想在那里添加一些额外的按钮。
【问题讨论】:
标签: c++ winapi visual-c++ dialog
我看到一些程序使用自定义的打开/保存文件对话框,它们在那里添加了一些额外的按钮。
我该怎么做?
请注意,我想使用基本的打开/保存对话框,所以我不必重新创建它们,因此保留操作系统语言中的按钮。我只想在那里添加一些额外的按钮。
【问题讨论】:
标签: c++ winapi visual-c++ dialog
更新: 正如 David Heffernan 在下面指出的那样,这个答案适用于 Vista 之前的 Windows 平台。从 Vista 开始,您应该使用 IFileDialogCustomize COM 接口。
基本上,您必须在传递给GetOpenFileName()/GetSaveFileName() 的OPENFILENAME 结构中设置OFN_ENABLETEMPLATE 标志。这允许您在同一结构的lpTemplateName 成员中指定自定义对话框模板。该模板将用于构建对话框。详情请见Explorer-Style Custom Templates。
请注意,如果您将自己的控件添加到对话框(在您的情况下为按钮),您应该
还要设置OFN_ENABLEHOOK 标志并在OPENFILENAME 结构的lpfnHook 成员中指定一个回调函数,以便您可以处理这些控件发送的消息。请参阅Explorer-Style Hook Procedures 了解更多信息。
【讨论】:
IFileDialogCustomize。如果你使用模板,你最终会得到令人反感的遗留对话框。
IFileDialogCustomize 代码,并在运行时切换行为。
这应该对你有帮助 Customizing common dialog controls
【讨论】: