MFC ActiveX コントロール : メソッド

更新 : 2007 年 11 月

ActiveX コントロールは、イベントを発生させることによって、コントロール コンテナと通信します。コンテナは、メソッドとプロパティを使ってコントロールと通信します。メソッドは、関数とも呼ばれます。

メソッドとプロパティは、オートメーション クライアントや ActiveX コントロール コンテナなどのほかのアプリケーションで使用するために公開されたインターフェイスを提供します。ActiveX コントロールのプロパティの詳細については、「MFC ActiveX コントロール : プロパティ」を参照してください。

メソッドの使い方や目的は、C++ クラスのメンバ関数に似ています。コントロールには、ストック メソッドとカスタム メソッドの 2 種類のメソッドを実装できます。ストック メソッドは、ストック イベントと同じように、COleControl によって実装されるメソッドです。ストック メソッドの詳細については、「MFC ActiveX コントロール : ストック メソッドの追加」を参照してください。カスタム メソッドを定義すると、コントロールをさらにカスタマイズできます。詳細については、「MFC ActiveX コントロール : カスタム メソッドの追加」を参照してください。

MFC (Microsoft Foundation Class) ライブラリには、コントロールがストック メソッドやカスタム メソッドをサポートできるようにするための機構が実装されています。この機構の 1 番目の要素は、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 コントロール ウィザードを使わなかった場合は、このコードを直接追加する必要があります。

メソッドの詳細については、以下のトピックを参照してください。

参照

概念

MFC ActiveX コントロール