OLE の背景知識 : MFC における実装
OLE API は、そのままではサイズが大きく複雑であるため、直接呼び出して OLE アプリケーションを作成しようとすると、時間がかかりすぎる場合があります。 Microsoft Foundation Class ライブラリの OLE 実装の目的は、フル機能の OLE 対応アプリケーションを作成する開発者が行うべき作業を減らすことです。
この記事では、MFC には実装されていない OLE API の領域について説明します。 また、実装されている機能と Windows SDK の OLE セクションとの対応関係についても説明します。
クラス ライブラリには実装されていない OLE 機能
OLE のいくつかのインターフェイスと機能は、MFC では直接提供されません。 それらの機能を使用する必要がある場合は、OLE API を直接呼び出してください。
IMoniker インターフェイス。IMoniker
インターフェイスはクラス ライブラリ (COleServerItem
クラスなど) に実装されていますが、今のところプログラマーには公開されていません。 このインターフェイスの詳細については、Windows SDK の OLE セクションにある OLE モニカーの実装に関するページを参照してください。 また、CMonikerFile クラスと CAsyncMonikerFile クラスに関するページも参照してください。
IUnknown と IMarshal インターフェイス。IUnknown
インターフェイスは、クラス ライブラリには実装されていますが、プログラマーには公開されていません。 IMarshal
インターフェイスは、クラス ライブラリには実装されておらず、内部的に使用されています。 クラス ライブラリを使用して作成されたオートメーション サーバーには、既にマーシャリング機能が組み込まれています。
Docfile (複合ファイル)。複合ファイルは、クラス ライブラリによって部分的にサポートされています。 複合ファイルを作成する以外で直接操作する関数は一切サポートされません。 MFC では、標準のファイル関数によるストリームの操作が、COleFileStream
クラスを使用してサポートされます。 詳細については、「コンテナー: 複合ファイル」の記事を参照してください。
インプロセス サーバーとオブジェクト ハンドラー。インプロセス サーバーとオブジェクト ハンドラーを使用すると、ダイナミックリンク ライブラリ (DLL) へのビジュアル編集データや完全なコンポーネント オブジェクト モデル (COM) オブジェクトの実装が可能になります。 DLL の実装は、OLE API を直接呼び出すことで行えます。 ただし、オートメーション サーバーを記述していて、ご自分のサーバーにユーザー インターフェイスがない場合は、AppWizard を使用して、ご自分のサーバーをインプロセス サーバーとして作成し、それを DLL に完全に配置できます。 これらのトピックの詳細については、「オートメーション サーバー」を参照してください。
ヒント
オートメーション サーバーを実装する方法としては、DLL に配置するのが最も簡単です。 この方法は MFC でサポートされています。
Microsoft Foundation の OLE クラスに OLE インターフェイスがどのように実装されているかについて詳しくは、MFC のテクニカル ノート 38、39、40 を参照してください。