次の方法で共有


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 コンテナーと同様に、アプリケーションのネイティブ データと、埋め込みまたはリンクされた項目を格納するためのクラスを設計する必要があります。 また、ネイティブ データを格納するためのデータ構造を設計する必要があります。 アプリケーションのネイティブ データの CDocItem派生クラスを定義する場合は、 COleDocument によって定義されたインターフェイスを使用して、ネイティブ データと OLE データを格納できます。

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

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

CWinApp派生クラスの InitInstance メンバー関数で、ドキュメント テンプレートを作成し、ドキュメント クラスとして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);

オブジェクトの ConnectTemplate メンバー関数を呼び出してCOleTemplateServer オブジェクトをドキュメント テンプレートに接続し、COleTemplateServer::RegisterAllを呼び出してすべてのクラス オブジェクトを OLE システムに登録します。

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

CWinApp派生クラス定義とInitInstance関数のサンプルについては、OCLIENT を参照してください。H と OCLIENT。MFC サンプル OCLIENT の CPP。

COleLinkingDocの使用の詳細については、「Containers: コンテナーの実装Containers: Advanced Featuresに関する記事を参照してください。

継承階層

CObject

CCmdTarget

CDocument

COleDocument

COleLinkingDoc

要件

ヘッダー: afxole.h

COleLinkingDoc::COleLinkingDoc

OLE システム DLL との通信を開始せずに、 COleLinkingDoc オブジェクトを構築します。

COleLinkingDoc();

解説

ドキュメントが開かれていることを OLE に通知するには、 Register メンバー関数を呼び出す必要があります。

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を使用している場合は、OnNewDocumentOnOpenDocument、およびOnSaveDocumentの実装COleLinkingDocRegisterが呼び出されます。

COleLinkingDoc::Revoke

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

void Revoke();

解説

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

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

関連項目

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