生の OLE API のサイズと複雑さのため、OLE アプリケーションを直接呼び出して OLE アプリケーションを記述するには、非常に時間がかかる場合があります。 OLE の Microsoft Foundation Class Library 実装の目的は、フル機能の 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
インターフェイスはクラス ライブラリによって実装されませんが、内部的に使用されます。 クラス ライブラリを使用して構築されたオートメーション サーバーには、マーシャリング機能が既に組み込まれています。
Docfiles (複合ファイル) 複合ファイルは、クラス ライブラリで部分的にサポートされています。 作成を超えて複合ファイルを直接操作する関数はサポートされていません。 MFC では、クラス COleFileStream
を使用して、標準のファイル関数を使用したストリームの操作をサポートします。 詳細については、「コンテナー: 複合ファイル」を参照してください。
In-Process サーバーとオブジェクト ハンドラーインプロセス サーバーとオブジェクト ハンドラーを使用すると、ダイナミック リンク ライブラリ (DLL) にビジュアル編集データまたは完全なコンポーネント オブジェクト モデル (COM) オブジェクトを実装できます。 これを行うには、OLE API を直接呼び出して DLL を実装できます。 ただし、Automation サーバーを作成していて、サーバーにユーザー インターフェイスがない場合は、AppWizard を使用してサーバーをインプロセス サーバーにし、完全に DLL に配置できます。 これらのトピックの詳細については、「 Automation サーバー」を参照してください。
ヒント
オートメーション サーバーを実装する最も簡単な方法は、DLL に配置することです。 MFC では、このアプローチがサポートされています。
Microsoft Foundation OLE クラスが OLE インターフェイスを実装する方法の詳細については、MFC テクニカル ノート 38、 39、 および 40 を参照してください。