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
的詳細資訊,請參閱容器:實作容器和容器:進階功能一文。
繼承階層架構
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 註冊檔。 如果檔代表內嵌專案,就不需要呼叫此函式。
如果您在應用程式中使用 COleTemplateServer
,Register
則會藉由COleLinkingDoc
、 和 OnSaveDocument
的實OnNewDocument
OnOpenDocument
作,為您呼叫 。
COleLinkingDoc::Revoke
通知 OLE 系統 DLL 檔已不再開啟。
void Revoke();
備註
呼叫此函式,以撤銷對 OLE 系統 DLL 的文件註冊。
關閉具名檔案時,您應該呼叫此函式,但通常不需要直接呼叫它。 Revoke
由、 OnNewDocument
OnOpenDocument
、 與OnSaveDocument
的實作OnCloseDocument
為您COleLinkingDoc
呼叫 。