主動式文件容器
主動式文件容器,例如 Microsoft Office 繫結器或 Internet Explorer,可讓您使用數個文件內的單一畫面 (而不是強迫您建立及使用每個文件類型的多個應用程式框架) 的不同應用程式類型。
MFC 提供完整支援主動式文件容器中的COleDocObjectItem類別。您可以使用 [MFC 應用程式精靈來建立主動式文件容器,藉由選取主動式文件容器 上的核取方塊 複合文件支援的 MFC 應用程式精靈] 頁面。如需詳細資訊,請參閱建立的使用中的文件容器應用程式。
如需有關使用中的文件容器的詳細資訊,請參閱:
容器需求
主動式文件支援主動式文件容器中的所示的不只是介面實作: 它也需要知道使用被收納物件的介面。套用至使用中文件的擴充,容器也必須知道如何使用這些擴充功能介面上使用中的文件本身的地方這個方法。
整合主動式文件的主動式文件容器必須:
能夠處理物件儲存到 IPersistStorage 介面,也就是,它必須提供IStorage每個使用中文件的執行個體。
支援的 OLE 文件,必要的 「 網站 」 物件 (每個文件或嵌入一個) 的基本嵌入功能該實作 IOleClientSite 和 IAdviseSink。
支援就地啟動的內嵌的物件或作用中的文件。容器的站台物件必須實作IOleInPlaceSite而容器的畫面格物件也必須提供 IOleInPlaceFrame。
藉由實作支援主動式文件副檔名IOleDocumentSite來提供對談到文件容器的機制。使用中的文件介面容器可實作選擇性地IOleCommandTarget和IContinueCallback去收取簡單的命令,如列印或儲存。
圖文框物件、 檢視物件和容器物件可以選擇性地實作 IOleCommandTarget 以支援特定的指令,分派所討論的 命令目標。也可以選擇性地實作檢視和容器物件,可以IPrint和IContinueCallback,而所討論的支援以程式設計方式列印, 以程式設計方式列印。
下圖顯示容器和其元件 (左邊),並在使用中文件和其檢視 (圖右) 之間的概念關係。使用中的文件管理儲存和資料,並檢視顯示,或選擇性的列印這份資料。以粗體顯示的介面是所需的使用中文件的參與。 這些粗體和斜體是選擇性的。所有其他的介面是必要的。
支援單一檢視的文件可以在單一實體類別上實作檢視 」 和 「 文件元件 (也就是他們的對應介面)。此外,只支援一次一個檢視的容器站台可以合併文件站台和檢視站台的單一實體站台類別。容器的框架物件,不過,不能馬虎,和容器的文件元件只是在這裡併入以提供完整的架構 ; 它不會影響使用中的文件內含項目結構。
文件站台物件
在使用中文件內含項目架構中,文件站台等同於 OLE 文件中加上的用戶端站台物件IOleDocument介面:
interface IOleDocumentSite : IUnknown
{
HRESULT ActivateMe(IOleDocumentView *pViewToActivate);
}
文件站台在概念上來說是一或多個 「 檢視站台 」 物件的容器。每個檢視站台物件是由文件站台管理的文件的個別檢視物件相關聯。如果容器只支援單一檢視每個文件站台,那麼它可以實作文件站台和檢視站台與單一實體類別。
檢視站台物件
容器的檢視站台物件管理文件的特定檢視顯示空間。除了支援標準的IOleInPlaceSite介面,通常也會檢視站台實作IContinueCallback以程式設計方式列印控制項。(請注意,view 物件永遠不會查詢的IContinueCallback讓它能夠實際實作上的任何物件容器渴望。)
若要建立多個檢視內文件站台的站台物件必須能夠使用支援多個檢視的容器。這會提供每一個檢視以不同的啟動和停用服務透過提供IOleInPlaceSite。
畫面格物件
容器的框架物件是,大多數的情況下,用來在就地啟動 OLE 文件內,也就是相同的框架,它會處理功能表和工具列交涉。View 物件可以存取這個圖文框物件,可透過 IOleInPlaceSite::GetWindowContext,它也提供存取容器物件,表示該容器文件 (它就可以處理窗格層級工具列交涉和被收納的物件的列舉型別)。
主動式文件容器可以藉由新增強化框架IOleCommandTarget。這可讓它接收源自於使用中文件的使用者介面中相同的方式,這個介面可以讓容器傳送相同的命令的命令 (例如開新檔案, 開啟, 另存新檔, 列印。 編輯複本, 貼上, 復原,等等) 到主動式文件。如需詳細資訊,請參閱命令目標。