分享方式:


COleLinkingDoc 類別

支援連結至所包含內嵌項目之 OLE 容器文件的基底類別。

語法

class COleLinkingDoc : public COleDocument

成員

公用建構函式

名稱 描述
COleLinkingDoc::COleLinkingDoc 建構 COleLinkingDoc 物件。

公用方法

名稱 描述
COleLinkingDoc::Register 向 OLE 系統 DLL 註冊檔。
COleLinkingDoc::Revoke 撤銷文件的註冊。

受保護的方法

名稱 描述
COleLinkingDoc::OnFindEmbeddedItem 尋找指定的內嵌專案。
COleLinkingDoc::OnGetLinkedItem 尋找指定的連結專案。

備註

支援連結至內嵌專案的容器應用程式稱為「連結容器」。 OCLIENT 範例應用程式是連結容器的範例。

當連結專案的來源是另一份檔中的內嵌專案時,必須載入包含檔的內嵌專案,才能編輯內嵌專案。 基於這個理由,當使用者想要編輯連結專案的來源時,必須能夠由另一個容器應用程式啟動連結容器。 您的應用程式也必須使用 COleTemplateServer 類別,以便在以程式設計方式啟動時建立檔。

若要讓您的容器成為連結容器,請從 COleLinkingDoc 衍生您的文件類別,而不是 COleDocument。 如同任何其他 OLE 容器,您必須設計類別來儲存應用程式的原生數據,以及內嵌或連結的專案。 此外,您必須設計數據結構來儲存原生數據。 如果您為應用程式的原生資料定義 CDocItem衍生類別,您可以使用 所 COleDocument 定義的介面來儲存原生數據和 OLE 資料。

若要讓應用程式以程式設計方式由另一個容器啟動,請將 物件宣告 COleTemplateServer 為應用程式 CWinApp衍生類別的成員:

class COleContainerApp : public CWinApp
{
protected:
   COleTemplateServer m_server;
   // remainder of class declaration omitted

InitInstance 衍生類別的成員函式中 CWinApp,建立文件範本,並將衍生類別指定 COleLinkingDoc為文件類別:

// CMyLinkDoc is derived from COleLinkingDoc
CMultiDocTemplate* pDocTemplate = new CMultiDocTemplate(IDR_LINKDOCTYPE,
   RUNTIME_CLASS(CMyLinkDoc),
   RUNTIME_CLASS(CChildFrame),
   RUNTIME_CLASS(CMyLinkView));
if (!pDocTemplate)
return FALSE;
pDocTemplate->SetContainerInfo(IDR_OLECONTTYPE_CNTR_IP);
AddDocTemplate(pDocTemplate);

COleTemplateServer藉由呼叫 物件的成員函式,向 OLE 系統COleTemplateServer::RegisterAll註冊所有類別物件,以將物件ConnectTemplate連接到文件範本:

m_server.ConnectTemplate(clsid, pDocTemplate, FALSE);
COleTemplateServer::RegisterAll();

如需範例 CWinApp衍生類別定義和 InitInstance 函式,請參閱 OCLIENT。H 和 OCLIENT。MFC 範例 OCLIENT 中的 CPP。

如需使用 COleLinkingDoc的詳細資訊,請參閱容器:實作容器容器:進階功能一文。

繼承階層架構

CObject

CCmdTarget

CDocument

COleDocument

COleLinkingDoc

需求

標頭: afxole.h

COleLinkingDoc::COleLinkingDoc

COleLinkingDoc建構物件,而不需開始與 OLE 系統 DLL 通訊。

COleLinkingDoc();

備註

您必須呼叫 Register 成員函式,以通知 OLE 檔已開啟。

COleLinkingDoc::OnFindEmbeddedItem

由架構呼叫,以判斷檔是否包含具有指定名稱的內嵌 OLE 專案。

virtual COleClientItem* OnFindEmbeddedItem(LPCTSTR lpszItemName);

參數

lpszItemName
所要求內嵌 OLE 專案名稱的指標。

傳回值

指定專案的指標;如果找不到專案,則為 NULL。

備註

默認實作會在內嵌項目清單中搜尋具有指定名稱的專案(名稱比較區分大小寫)。 如果您有儲存或命名內嵌 OLE 專案的方法,請覆寫此函式。

COleLinkingDoc::OnGetLinkedItem

由架構呼叫,以檢查檔是否包含具有指定名稱的連結伺服器專案。

virtual COleServerItem* OnGetLinkedItem(LPCTSTR lpszItemName);

參數

lpszItemName
所要求連結 OLE 專案名稱的指標。

傳回值

指定專案的指標;如果找不到專案,則為 NULL。

備註

默認 COleLinkingDoc 實作一律會傳回NULL。 在衍生類別 COleServerDoc 中覆寫此函式,以搜尋具有指定名稱之連結專案的 OLE 伺服器專案清單(名稱比較區分大小寫)。 如果您已實作自己的儲存或擷取連結伺服器專案的方法,請覆寫此函式。

COleLinkingDoc::Register

通知 OLE 系統 DLL 檔已開啟。

BOOL Register(
    COleObjectFactory* pFactory,
    LPCTSTR lpszPathName);

參數

pFactory
OLE Factory 物件的指標(可以是 NULL)。

lpszPathName
容器檔的完整路徑指標。

傳回值

如果成功註冊檔,則為非零;否則為 0。

備註

建立或開啟具名檔案時呼叫此函式,以向 OLE 系統 DLL 註冊檔。 如果檔代表內嵌專案,就不需要呼叫此函式。

如果您在應用程式中使用 COleTemplateServerRegister則會藉由COleLinkingDoc、 和 OnSaveDocument的實OnNewDocumentOnOpenDocument作,為您呼叫 。

COleLinkingDoc::Revoke

通知 OLE 系統 DLL 檔已不再開啟。

void Revoke();

備註

呼叫此函式,以撤銷對 OLE 系統 DLL 的文件註冊。

關閉具名檔案時,您應該呼叫此函式,但通常不需要直接呼叫它。 Revoke由、 OnNewDocumentOnOpenDocument、 與OnSaveDocument的實作OnCloseDocument為您COleLinkingDoc呼叫 。

另請參閱

MFC 範例 OCLIENT
COleDocument 類別
階層架構圖表
CDocTemplate 類別