共用方式為


伺服器:伺服器項目

當容器啟動伺服器,讓使用者可以編輯內嵌或連結的 OLE 專案時,伺服器應用程式會建立「伺服器專案」。伺服器專案是衍生自 COleServerItem 之類別的物件,提供伺服器檔與容器應用程式之間的介面。

COleServerItem 類別通常會定義由 OLE 呼叫的數個可覆寫成員函式,以回應容器的要求。 伺服器項目可代表伺服器文件的一部分或整個文件。 當 OLE 項目內嵌於容器文件中時,伺服器項目代表整個伺服器文件。 當 OLE 項目為連結時,伺服器項目可能表示伺服器文件或整份文件的一部分,視連結是連至一部分或整體。

例如,在 HIERSVR 範例中 ,伺服器專案類別 CServerItem 具有成員,該成員是 類別 CServerNode 物件的 指標。 物件 CServerNode 是 HIERSVR 應用程式檔中的節點,也就是樹狀結構。 CServerNode當物件是根節點時, CServerItem 物件代表整個檔。 CServerNode當物件是子節點時, CServerItem 物件代表檔的一部分。 如需此互動的範例,請參閱 MFC OLE 範例 HIERSVR

實作伺服器專案

如果您使用應用程式精靈產生應用程式的起始程式碼,則要在起始程式碼中包含伺服器項目的話,您只要從 [OLE 選項] 頁面選擇其中一個伺服器選項即可。 如果您將伺服器項目加入至現有的應用程式,請執行下列步驟:

實作伺服器項目

  1. COleServerItem 衍生類別。

  2. 在衍生類別中,覆寫 OnDraw 成員函式。

    這個架構會呼叫 OnDraw 以轉譯 OLE 項目為中繼檔。 容器應用程式會使用此中繼檔轉譯項目。 您的應用程式的檢視類別也有一個 OnDraw 成員函式,用來在伺服器應用程式作用中時轉譯項目。

  3. 為您的伺服器文件類別實作 OnGetEmbeddedItem 的覆寫。 如需詳細資訊,請參閱伺服器:實作伺服器檔和 MFC OLE 範例 HIERSVR 一文 。

  4. 實作您的伺服器項目類別的 OnGetExtent 成員函式。 架構會呼叫這個函式以擷取項目的大小。 預設實作不做任何動作。

伺服器專案架構的秘訣

如實作伺服器專案 中所述 ,伺服器應用程式必須能夠在伺服器檢視和容器應用程式所使用的中繼檔中轉譯專案。 在 Microsoft Foundation Class Library 的應用程式架構中,檢視類別 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

另請參閱

伺服器