2011-10-17 161 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風格定製,但結果卻是令人反感的傳統對話框。 –