COleLinkingDoc クラス
更新 : 2007 年 11 月
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 サンプル : ビジュアル編集コンテナ アプリケーションの説明