COleLinkingDoc クラス
OLE コンテナー ドキュメントの基本クラスです。OLE コンテナー ドキュメントは、ドキュメントが保持する埋め込みアイテムへのリンクをサポートします。
class COleLinkingDoc : public COleDocument
解説
埋め込みアイテムへのリンクをサポートするコンテナー アプリケーションは、"リンク コンテナー" と呼ばれます。サンプル アプリケーション OCLIENT は、このリンク コンテナーの例です。
リンクされたアイテムのソースがほかのドキュメントの埋め込みアイテムであるとき、その埋め込みアイテムを編集するには、それを保持するドキュメントが読み込まれている必要があります。 このため、ユーザーがリンク アイテムのソースを編集する場合、ほかのコンテナー アプリケーションがリンク コンテナーを起動できる必要があります。 また、アプリケーションでは、プログラムによって起動されたときにドキュメントを作成できるように、COleTemplateServer クラスを使用する必要があります。
コンテナー アプリケーションをリンク コンテナーにするには、COleDocument ではなく、COleLinkingDoc からドキュメント クラスを派生させます。 ほかの OLE コンテナーと同様に、埋め込みアイテムやリンク アイテムだけではなく、アプリケーションのネイティブ データを格納するようにクラスをデザインします。 また、ネイティブ データを格納するためのデータ構造もデザインする必要があります。 アプリケーションのネイティブ データ用の CDocItem の派生クラスを定義すると、COleDocument によって定義されるインターフェイスを使用して、OLE データと同じようにアプリケーションのネイティブ データを格納できます。
ほかのコンテナーから、アプリケーションをプログラムによって起動できるようにするには、アプリケーションの CWinApp 派生クラスのメンバーとして COleTemplateServer オブジェクトを宣言します。
class COleContainerApp : public CWinApp
{
protected:
COleTemplateServer m_server;
// remainder of class declaration ommitted
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 関数のサンプルは、「MFC サンプル」の「OCLIENT」で OCLIENT.H および OCLIENT.CPP を参照してください。
使用しての詳細についてはCOleLinkingDoc、記事を参照してくださいコンテナー:コンテナーの実装 と コンテナー:高度な機能。
必要条件
**ヘッダー:**afxole.h
参照
処理手順
OCLIENT サンプル:コンテナ アプリケーションを編集 Visual を示します