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
派生クラスのInitInstance
CWinApp
メンバー関数で、ドキュメント テンプレートを作成し、ドキュメント クラスとして -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
の詳細については、「コンテナー: コンテナーとコンテナーの実装: 高度な機能」を参照してください。
継承階層
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
' の実装 OnNewDocument
、COleLinkingDoc
OnOpenDocument
および OnSaveDocument
.
COleLinkingDoc::Revoke
ドキュメントが開かなくなったことを OLE システム DLL に通知します。
void Revoke();
解説
OLE システム DLL に対するドキュメントの登録を取り消すには、この関数を呼び出します。
この関数は、名前付きファイルを閉じるときに呼び出す必要がありますが、通常は直接呼び出す必要はありません。 Revoke
の実装OnOpenDocument
OnCloseDocument
OnNewDocument
によってCOleLinkingDoc
呼び出されます。OnSaveDocument
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示