COleLinkingDoc クラス

OLE コンテナー ドキュメントの基底クラスです。OLE コンテナー ドキュメントは、ドキュメントが保持する埋め込みアイテムへのリンクをサポートします。

構文

class COleLinkingDoc : public COleDocument

メンバー

パブリック コンストラクター

名前 説明
COleLinkingDoc::COleLinkingDoc COleLinkingDoc オブジェクトを構築します。

パブリック メソッド

名前 説明
COleLinkingDoc::Register OLE システム DLL にドキュメントを登録します。
COleLinkingDoc::Revoke ドキュメントの登録を取り消します。

保護メソッド

名前 説明
COleLinkingDoc::OnFindEmbeddedItem 指定した埋め込み項目を検索します。
COleLinkingDoc::OnGetLinkedItem 指定したリンク アイテムを検索します。

解説

埋め込み項目へのリンクをサポートするコンテナー アプリケーションは、"リンク コンテナー" と呼ばれます。 OCLIENT サンプル アプリケーションは、リンク コンテナーの例です。

リンク アイテムのソースが別のドキュメントの埋め込みアイテムである場合、埋め込みアイテムを編集するには、そのドキュメントを含むアイテムを読み込む必要があります。 このため、ユーザーがリンク アイテムのソースを編集する場合は、リンク コンテナーを別のコンテナー アプリケーションによって起動できる必要があります。 アプリケーションでは、プログラムで起動したときにドキュメントを 作成できるように、COleTemplateServer クラスも使用する必要があります。

コンテナーをリンク コンテナーにするには、COleDocument の代わりにドキュメント クラスをCOleLinkingDoc派生させます。 他の OLE コンテナーと同様に、アプリケーションのネイティブ データと、埋め込みまたはリンクされた項目を格納するためのクラスを設計する必要があります。 また、ネイティブ データを格納するためのデータ構造を設計する必要があります。 アプリケーションのネイティブ データの -derived クラスを定義 CDocItemする場合は、定義されたインターフェイス COleDocument を使用して、ネイティブ データと OLE データを格納できます。

アプリケーションを別のコンテナーによってプログラムで起動できるようにするには、オブジェクトを COleTemplateServer アプリケーションの -derived クラスの CWinAppメンバーとして宣言します。

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

派生クラスのInitInstanceCWinAppメンバー関数で、ドキュメント テンプレートを作成し、ドキュメント クラスとして -derived クラスを指定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 呼び出してオブジェクトをドキュメント テンプレートに接続し、次を ConnectTemplate 呼び出 COleTemplateServer::RegisterAllしてすべてのクラス オブジェクトを OLE システムに登録します。

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 が返されます。 この関数は、指定した名前を持つリンクアイテムの OLE サーバー項目の一覧を検索する派生クラス COleServerDoc でオーバーライドされます (名前の比較では大文字と小文字が区別されます)。 リンク サーバー項目を格納または取得する独自のメソッドを実装している場合は、この関数をオーバーライドします。

COleLinkingDoc::Register

ドキュメントが開かれていることを OLE システム DLL に通知します。

BOOL Register(
    COleObjectFactory* pFactory,
    LPCTSTR lpszPathName);

パラメーター

pFactory
OLE ファクトリ オブジェクトへのポインター (NULL を指定できます)。

lpszPathName
コンテナー ドキュメントの完全修飾パスへのポインター。

戻り値

ドキュメントが正常に登録された場合は 0 以外。それ以外の場合は 0。

解説

OLE システム DLL にドキュメントを登録する名前付きファイルを作成または開くときに、この関数を呼び出します。 ドキュメントが埋め込みアイテムを表している場合は、この関数を呼び出す必要はありません。

アプリケーションで使用COleTemplateServerしている場合は、Register' の実装 OnNewDocumentCOleLinkingDocOnOpenDocumentおよび OnSaveDocument.

COleLinkingDoc::Revoke

ドキュメントが開かなくなったことを OLE システム DLL に通知します。

void Revoke();

解説

OLE システム DLL に対するドキュメントの登録を取り消すには、この関数を呼び出します。

この関数は、名前付きファイルを閉じるときに呼び出す必要がありますが、通常は直接呼び出す必要はありません。 Revokeの実装OnOpenDocumentOnCloseDocumentOnNewDocumentによってCOleLinkingDoc呼び出されます。OnSaveDocument

関連項目

MFC サンプル OCLIENT
COleDocument クラス
階層図
CDocTemplate クラス