MFC ActiveX コントロール : メソッド
ActiveX コントロールは、イベントを開始して、コントロール コンテナーと通信します。 コンテナーは、メソッドとプロパティを使用してコントロールと通信することもできます。 メソッドは関数とも呼ばれます。
メソッドとプロパティは、Automation クライアントや ActiveX コントロール コンテナーなど、他のアプリケーションで使用するためにエクスポートされたインターフェイスを提供します。 ActiveX コントロールのプロパティの詳細については、「MFC ActiveX コントロール: プロパティ」をご覧ください。
メソッドは、C++ クラスのメンバー関数と使用と目的がよく似ています。 コントロールで実装できるメソッドには、ストックとカスタムの2種類があります。 ストック イベントと同様に、ストック メソッドは、COleControl が実装を提供するメソッドです。 ストック メソッドの詳細については、「MFC ActiveX コントロール : ストック メソッドの追加」を参照してください。 開発者によって定義されたカスタムメソッドによって、コントロールをさらにカスタマイズできます。 詳細については、「MFC ActiveX コントロール: カスタムメソッドの追加」を参照してください。
Microsoft Foundation Class ライブラリ (MFC) は、コントロールでストック メソッドとカスタム メソッドをサポートできるようにするメカニズムを実装しています。 最初の部分はクラス COleControl
です。 CWnd
から派生した COleControl
メンバー関数は、すべての ActiveX コントロールに共通のストック メソッドをサポートしています。 このメカニズムの 2 番目の部分はディスパッチマップです。 ディスパッチ マップは、メッセージ マップに似ています。ただし、ディスパッチ マップは関数を Windows メッセージ ID にマップするのではなく、仮想メンバー関数を IDispatch IDS にマップします。
コントロールがさまざまなメソッドを適切にサポートするためには、そのクラスでディスパッチマップを宣言する必要があります。 これは、コントロール クラス ヘッダー (.H) ファイルにある次のコード行によって実現されます。
DECLARE_DISPATCH_MAP()
ディスパッチ マップの主な目的は、外部の呼び出し元 (コンテナーなど) によって使用されるメソッド名と、メソッドを実装するコントロールのクラスのメンバー関数との間に関係を確立することです。 デスパッチ マップが宣言されたら、コントロールの実装 (.CPP) ファイルで定義する必要があります。 次のコード行は、ディスパッチ マップを定義しています。
BEGIN_DISPATCH_MAP(CMyAxUICtrl, COleControl)
END_DISPATCH_MAP()
MFC ActiveX コントロール ウィザードを使用してプロジェクトを作成する場合、これらの行は自動的に追加されます。 MFC ActiveX コントロール ウィザードを使用しない場合は、これらの行を手動で追加する必要があります。
次の記事では、メソッドについて詳しく説明します。