COleControl クラス

更新 : 2007 年 11 月

OLE コントロールを開発するための強力な基本クラスです。

class COleControl : public CWnd

解説

CWnd から派生したこのクラスは、Windows のウィンドウ オブジェクトのすべての機能に加え、イベントの発生や、メソッドやプロパティのサポート機能などの OLE 独自の機能も継承します。

OLE コントロールは OLE コンテナ アプリケーションに挿入できます。さらに、イベント発生の双方向システムや、コンテナへのメソッドおよびプロパティの公開を使用して、コンテナと対話することもできます。標準の OLE コンテナは、OLE コントロールの基本機能だけをサポートします。OLE コントロールの機能拡張はサポートしません。イベント発生は、コントロールで発生した特定のアクションの結果として、コンテナにイベントが送られたときに起こります。一方コンテナは、C++ クラスのメンバ関数やデータ メンバに似たメソッドやプロパティの公開された組み合わせを使って、コントロールと対話します。このシステムによって、開発者がコントロールの外観を制御したり、あるアクションが起きたときにコンテナに通知するように設定したりできます。

ウィンドウなしのコントロール

OLE コントロールは、ウィンドウがなくても埋め込み先編集の有効化を行うことができます。ウィンドウなしのコントロールには、次のような利点があります。

  • 透過的に配置でき、四角形である必要がありません。

  • インスタンスのサイズを縮小し、オブジェクトの作成時間を短縮します。

コントロールはウィンドウを必要としません。ウィンドウが提供するサービスは、共有の単一ウィンドウ (通常はコンテナ) と小さなディスパッチ コードを使って提供できます。ウィンドウを持つと、ほとんどの場合オブジェクトは不必要に複雑になってしまいます。

ウィンドウなしのアクティベーションが使用される場合は、ほかの場合にはコントロール自身のウィンドウによって提供されていたサービスを、ウィンドウを持っているコンテナが提供する必要があります。たとえば、コントロールがキーボード フォーカスの問い合わせ、マウス キャプチャの問い合わせ、またはデバイス コンテキストの取得を必要とする場合、これらの操作はコンテナによって管理されます。COleControlウィンドウなしの操作のメンバ関数は、コンテナ内でこれらの操作を起動します。

ウィンドウなしのアクティベーションが有効になると、コンテナは、コントロールの IOleInPlaceObjectWindowless インターフェイス (IOleInPlaceObject のウィンドウなしのサポートの拡張) に入力メッセージを送ります。このインターフェイスの COleControl の実装では、マウス座標を適切に調整した後、コントロールのメッセージ マップからこれらのメッセージをディスパッチします。これらのメッセージは、メッセージ マップに対応するエントリを追加することによって、本来のウィンドウ メッセージと同様に処理できます。

ウィンドウなしのコントロールでは、対応する CWnd メンバ関数または関連する Windows API 関数の代わりに、常に COleControl メンバ関数を使うようにします。

OLE コントロール オブジェクトでは、アクティブになった場合にだけウィンドウを作成できますが、非アクティブ/アクティブ状態の変換に多くの処理が必要になるため、状態の変換の速度が低下します。この変換速度の低下が問題になる例として、テキスト ボックスのグリッドがあります。列内でカーソルが上下に移動する動作に合わせ、それぞれのコントロールは埋め込み先編集が有効な非アクティブになる必要があります。この場合、アクティブ/非アクティブの状態の変換の速度が、スクロール速度に直接影響します。

OLE コントロール フレームワークの開発の詳細については、「MFC ActiveX コントロール」と「MFC ActiveX コントロール ウィザード」を参照してください。ウィンドウなしのコントロールおよびちらつきなしのコントロールを含む OLE コントロールの最適化については、「MFC ActiveX コントロール : 最適化」を参照してください。

必要条件

ヘッダー : afxctl.h

参照

処理手順

CIRC サンプル : ActiveX コントロール

TESTHELP サンプル : ツール ヒントとヘルプを持つ ActiveX コントロール

参照

COlePropertyPage クラス

CWnd クラス

階層図

CFontHolder クラス

CPictureHolder クラス

その他の技術情報

COleControl のメンバ