伺服程式: 伺服項
容器啟動伺服程式,以便讓使用者可以編輯嵌入或連結的 OLE 項目,伺服器應用程式會建立 「 伺服器項目 」。伺服器項目,是一種物件類別的衍生自COleServerItem,提供伺服程式文件和收納器應用程式間的介面。
COleServerItem類別會定義幾個可覆寫成員函式所呼叫之 ole,通常是以回應要求,從容器。 伺服項可以代表伺服程式文件或整份文件的一部分。 當一個 OLE 項目內嵌於容器文件時,伺服項即代表整個伺服程式文件。 當連結 OLE 項目時,伺服項可以代表伺服程式文件或整個文件中的,視是否連結至組件或與整體的一部分。
在 HIERSVR 範例,比方說,伺服項類別中, CServerItem,有一個是指向類別的物件的成員 CServerNode。 CServerNode 物件是在 HIERSVR 應用程式的文件,就是樹狀結構中的一個節點。 當 CServerNode 物件是根節點, CServerItem 物件代表整份文件。 當 CServerNode 物件是一個子節點, CServerItem 物件代表文件的一部分。 請參閱 MFC OLE 範例 HIERSVR 如需這種互動的範例。
實作伺服項
如果您使用應用程式精靈產生應用程式的 「 起始 」 程式碼時,您只需將伺服項包含在您的起始程式碼是從 [OLE 選項] 頁面選擇其中一個伺服器選項。 如果要新增到現有的應用程式的伺服器項目,請執行下列步驟:
若要實作一個伺服項
從 COleServerItem 衍生類別。
在您的衍生類別中覆寫OnDraw成員函式。
架構呼叫OnDraw來呈現在中繼檔的 OLE 項目。 收納器應用程式會使用這個中繼檔,來呈現項目。 您的應用程式檢視類別也具有OnDraw成員函式,用來呈現項目,當伺服器應用程式正在使用。
實作的覆寫OnGetEmbeddedItem為您的伺服程式文件類別。 如需詳細資訊,請參閱文章伺服器: 實作伺服程式文件 和 MFC OLE 範例 HIERSVR。
實作您的伺服器項目類別OnGetExtent成員函式。 架構會呼叫這個函式,以取得項目的大小。 預設實作不做任何動作。
一個伺服項架構的提示
就像述實作伺服項,伺服器應用程式必須要能夠呈現在伺服器端視圖和收納器應用程式所使用的中繼檔中的項目。 在 Mfc 程式庫的應用程式架構中,檢視類別的OnDraw成員函式會被編輯時,呈現項目 (請參閱 CView::OnDraw 在類別庫參考)。 伺服器項目的OnDraw將項目呈現在所有其他情況下在中繼檔 (請參閱 COleServerItem::OnDraw)。
您可以避免重複的程式碼在您的伺服程式文件類別中撰寫 helper 函式,並呼叫從OnDraw您檢視和伺服項類別中的函式。 MFC OLE 範例 HIERSVR 會使用這項策略: 函式 CServerView::OnDraw 和 CServerItem::OnDraw 兩者呼叫 CServerDoc::DrawTree 來呈現項目。
檢視與此項目都有OnDraw成員函式,因為它們在不同的情況下繪製。 檢視必須考慮像是因素縮放、 選取範圍的大小和範圍、 裁剪,以及使用者介面項目,例如捲軸列。 相反地,伺服項一律繪製出整個 OLE 物件。
如需詳細資訊,請參閱 CView::OnDraw, COleServerItem, COleServerItem::OnDraw,以及 COleServerDoc::OnGetEmbeddedItem 在類別庫參考。