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に関する記事を参照してください。
継承階層
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
を使用している場合は、OnNewDocument
、OnOpenDocument
、およびOnSaveDocument
の実装COleLinkingDoc
Register
が呼び出されます。
COleLinkingDoc::Revoke
ドキュメントが開かなくなったことを OLE システム DLL に通知します。
void Revoke();
解説
OLE システム DLL に対するドキュメントの登録を取り消すには、この関数を呼び出します。
この関数は、名前付きファイルを閉じるときに呼び出す必要がありますが、通常は直接呼び出す必要はありません。 Revoke
は、OnCloseDocument
、OnNewDocument
、OnOpenDocument
、およびOnSaveDocument
の実装COleLinkingDoc
によって呼び出されます。