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

更新 : 2007 年 11 月

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 に内蔵できます。これらのトピックの詳細については、「オートメーション サーバー」を参照してください。

    t3kwtt2z.alert_note(ja-jp,VS.90).gifヒント :

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

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

参照

概念

OLE の背景知識

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