2011-10-17 62 views
0

Office 2010有一个新类型的功能区,backstage view。这已在MFC中使用Codejock Xtreme Toolkit Pro V15.0.1实现。嵌入文件打开对话框

的事情是,我觉得文件>打开文件>另存为行事办公室很奇怪。他们打开一个模式文件打开对话框,而不是在后台打开一个嵌入式文件打开对话框,这会让(IMHO)感觉更自然。

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

那么,是不是可以嵌入标准的Windows文件打开对话框中另一个对话框控制?还是我需要自己实施整个事情?

+0

我怀疑这可以做到。另外,Office团队因使用他们自己的文件对话框而不是系统对话而被嘲笑了数年和数年。直到Office 2007,他们才开始使用系统对话框。在我看来,使用系统对话框是一件好事,但我可以看到后台内置的嵌入如何感觉更清晰。 –

回答

1

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

Here's one implementation

And another

And an MSDN version

感谢David指出上述有点过时了,所以,经过快速谷歌,这里有一个more modern take on extending the file dialogs (and lots of other stuff as well).

+0

所有这些链接都过时了。当Vista发布时,游戏完全改变了。 'IFileDialogCustomize'是实现这一点的新方法。 –

2

据我所知,标准的打开/保存对话框的功能是通过暴露只有模式对话框(通过GetOpenFilename Win32 API)。

有一个标准mechanisme自定义对话框(见Skizz answer),但它仍然是一个模态对话框。高级定制的一种情况是VB6 打开项目对话框:

enter image description here

Existing选项卡包含一个文件对话框。他们是如何做到的呢?我的意思是,他们是如何设法将标准对话框放入其3页标签属性页的页面?

看来他们简单地使用的标准定制对话框,并加入上述标准目录/文件控制用于其它“标签”高于DIR /文件控件的选项卡控件和列表视图。当点击Existing以外的选项卡时,这些目录/文件控件随后被自定义代码隐藏。你明白了:没有真正的标签!只是一个很好的旧文件对话框,其中主要控件可能隐藏在其他的对话框中。

所以我的答案很简单:你使用对话框作为一个孩子的控制是非常倒霉。

现在,回过头来办公室:我相信这是更好地保持一个模态对话框。否则会让用户感到困惑:我开始键入真正路径的路径是否只点击了“主页”并让save命令未完成?

+0

根据我对Skizz的回答的评论,在Vista引入'IFileDialogCustomize'后,所有这些信息现在都过时了。 –

+1

@David:很高兴知道关于IFileDialogCustomize,但除了根据各种报告,如[this one](http://www.w3schools.com/browsers/browsers_os.asp),XP仍在使用35这些新的定制机制如何过时我的答案?它是否允许按照OP的要求嵌入文件对话框? –

+0

它使它不完整。任何定制的文件对话框都需要用这两种方法来实现,直到你准备放弃对XP的支持。更重要的是'IFileDialogCustomize'提供的定制远不如旧式XP对话框提供的那么灵活。所以你展示的截图根本不适用于新的对话框。当然不需要使用'IFileDialogCustomize'来嵌入。虽然您可以继续进行XP风格定制,但结果却是令人反感的传统对话框。 –