嵌入文件打开对话框

时间:2011-10-17 09:39:04

标签: c++ windows winapi mfc ribbon

Office 2010有一种新类型的功能区backstage view。这已在MFC中使用Codejock Xtreme Toolkit Pro V15.0.1。

实现

问题是我觉得File> Open和File> SaveAs在Office中表现得很奇怪。他们打开一个模态文件打开对话框,而不是在后台打开一个嵌入式文件打开对话框,这会让(恕我直言)感觉更自然。

我找不到使用MFC或Win32在C ++中执行此操作的方法。我发现的唯一问题是this问题,但这是针对Delphi的。

那么,是否可以在另一个对话框中嵌入标准Windows文件打开对话框作为控件?或者我是否需要自己实施整个事情?

2 个答案:

答案 0 :(得分:2)

据我所知,标准的“打开/保存”对话框功能仅通过模式对话框公开(通过GetOpenFilename Win32 API)。

有一个标准的机制可以自定义对话框(参见Skizz answer),但它仍然是一个模态对话框。一个高级自定义案例是VB6 Open Project 对话框:

enter image description here

Existing标签包含文件对话框。他们是如何做到的呢?我的意思是,他们是如何设法将标准对话框放入3-tabs属性表的页面中的?

看起来他们只是使用了标准的自定义对话框,并在标准目录/文件控件和列表视图上方添加了一个选项卡控件,用于dir / file控件上方的其他“选项卡”。当单击Existing以外的选项卡时,自定义代码会隐藏这些目录/文件控件。你得到它:没有真正的标签!只是一个很好的旧文件对话框,其中主要控件可能被隐藏,有利于其他控件。

所以我的简短回答是:使用对话框作为儿童控制,你几乎没有运气。

现在,回到办公室:我认为保持模态对话更好。否则会让用户感到困惑:我开始键入真实路径的路径是否只是单击“主页”并让保存命令未完成?

答案 1 :(得分:1)

我不知道你是否可以将文件打开对话框嵌入到另一个对话框中,但你当然可以扩展现有的对话框: -

Here's one implementation

And another

And an MSDN version

感谢大卫指出上面的内容有点过时了,所以,在快速谷歌之后,这里有一个more modern take on extending the file dialogs (and lots of other stuff as well).