次の方法で共有


OLE の背景知識 : MFC における実装

OLE API は、そのままではサイズが大きく複雑なので、直接呼び出して OLE アプリケーションを作成するのは、たいへん手間がかかります。 MFC (Microsoft Foundation Class) ライブラリ版の OLE を使うと、完全な OLE 対応アプリケーションを作成する作業量が減ります。

ここでは、まず MFC に実装されていない OLE API について説明します。 続いて、実装されている部分が Windows SDK の OLE の部分にどのように対応するのかを説明します。

OLE の中でクラス ライブラリで実装されていない部分

OLE のインターフェイスや機能には、MFC では直接実装されていないものもあります。 このような機能を使う場合は、OLE API を直接呼び出します。

  • IMoniker インターフェイス
    IMoniker インターフェイスはクラス ライブラリによって実装されていますが (COleServerItem クラスなど)、以前はプログラマに対して公開されていませんでした。 このインターフェイスの詳細については、Windows SDK の「OLE Moniker Implementations」を参照してください。 CMonikerFile クラスと CAsyncMonikerFile クラスについても参照してください。

  • IUnknown インターフェイスおよび IMarshal インターフェイス
    IUnknown インターフェイスはクラス ライブラリに実装されていますが、プログラマには公開されていません。 IMarshal インターフェイスはクラス ライブラリに実装されませんが、内部的に使われています。 クラス ライブラリを使って作成したオートメーション サーバーには、既にマーシャリング機能が組み込まれています。

  • Docfile (複合ファイル)
    クラス ライブラリは、複合ファイルを部分的にサポートしています。 複合ファイルを直接操作する関数には、ファイルの作成用の関数だけが用意されています。 MFC は、COleFileStream クラスを使って標準のファイル関数によるストリームの操作をサポートします。 詳細についてを参照してください「コンテナー:複合ファイル

  • インプロセス サーバーとオブジェクト ハンドラー
    インプロセス サーバーとオブジェクト ハンドラーを使用すると、ビジュアル編集データと完全なコンポーネント オブジェクト モデル (COM) をダイナミック リンク ライブラリ (DLL: Dynamic Link Library) に実装できます。 この場合は、DLL から OLE API を直接呼び出します。 ただし、開発するオートメーション サーバーがユーザー インターフェイスを持っていない場合は、MFC アプリケーション ウィザードを使うと、サーバーをインプロセス サーバーとして完全に DLL に内蔵できます。 これらのトピックの詳細については、「オートメーション サーバー」を参照してください。

    ヒント

    オートメーション サーバーを実装する最も簡単な方法は、DLL に組み込む方法です。 MFC を使って組み込むことができます。

MFC の OLE 関連クラスに OLE インターフェイスを実装する方法の詳細については、「MFC テクニカル ノート」の「テクニカル ノート 38: MFC/OLE IUnknown の実装」、「テクニカル ノート 39: MFC/OLE オートメーションの実装」、および「テクニカル ノート 40: MFC/OLE 埋め込み先サイズ変更とズーム」を参照してください。

参照

概念

OLE の背景知識

OLE の背景知識 : 実装の方法