イベント マップ

コントロールは、(コントロール開発者によって決定される) 何らかのアクション (キーストローク、マウス クリック、コントロールの状態の変更など) が発生したことをコンテナーに通知するたびに、イベント発生関数を呼び出します。 この関数は、関連するイベントを発生させて重要なアクションが発生したことを制御コンテナーに通知します。

Microsoft Foundation クラス ライブラリには、イベントを発生させるために最適化されたプログラミング モデルが用意されています。 このモデルでは、"イベント マップ" を使用して、特定のコントロールのイベントを発生させる関数を指定します。 イベント マップには、イベントごとに 1 つのマクロが含まれています。 たとえば、ストック クリック イベントを発生するイベント マップは次のようになります。

BEGIN_EVENT_MAP(CMyAxCtrl, COleControl)
EVENT_STOCK_CLICK()
END_EVENT_MAP()

マクロは EVENT_STOCK_CLICK 、コントロールがマウス クリックを検出するたびにストック Click イベントを発生することを示します。 その他のストック イベントの詳細な一覧については、ActiveX コントロール: イベントに関する記事を参照してください。 マクロは、カスタム イベントを示すためにも使用できます。

イベント マップ マクロは重要ですが、通常は直接挿入しません。 これは、イベント発生関数をイベントに関連付けるためにソース ファイルを使用すると、(クラス ビューの) [プロパティ] ウィンドウによってソース ファイルにイベント マップ エントリが自動的に作成されるためです。 イベント マップ エントリを編集または追加する場合は、いつでも [プロパティ] ウィンドウを使用できます。

イベント マップをサポートするために、MFC には次のマクロが用意されています。

イベント マップ マクロ

イベント マップの宣言と区分

名前 説明
DECLARE_EVENT_MAP イベントをイベント発生関数にマップするために、イベント マップをクラスで使用することを宣言します (クラス宣言で使用する必要があります)。
BEGIN_EVENT_MAP イベント マップの定義を開始します (クラス実装で使用する必要があります)。
END_EVENT_MAP イベント マップの定義を終了します (クラス実装で使用する必要があります)。

イベント マッピング マクロ

名前 説明
EVENT_CUSTOM 指定したイベントを発生させるイベント発生関数を示します。
EVENT_CUSTOM_ID 指定されたディスパッチ ID を使用して、指定したイベントを発生させるイベント発生関数を示します。

メッセージ マッピング マクロ

名前 説明
ON_OLEVERB OLE コントロールによって処理されるカスタム動詞を示します。
ON_STDOLEVERB OLE コントロールの標準動詞マッピングをオーバーライドします。

DECLARE_EVENT_MAP

プログラム内の各 COleControl派生クラスは、コントロールが起動するイベントを指定するイベント マップを提供できます。

DECLARE_EVENT_MAP()

解説

クラス宣言の最後に DECLARE_EVENT_MAP マクロを使用します。 次に、クラスのメンバー関数を定義する .cpp ファイルで、BEGIN_EVENT_MAP マクロ、各コントロールのイベントのマクロ エントリ、およびイベント リストの末尾を宣言する END_EVENT_MAP マクロを使用します。

イベント マップの詳細については、「ActiveX コントロール: イベント」を参照してください。

必要条件

ヘッダー afxctl.h

BEGIN_EVENT_MAP

イベント マップの定義を開始します。

BEGIN_EVENT_MAP(theClass,  baseClass)

パラメーター

theClass
イベント マップを持つコントロール クラスの名前を指定します。

baseClass
クラスの基底クラスの 名前を指定します

解説

クラスのメンバー関数を定義する実装 (.cpp) ファイルで、BEGIN_EVENT_MAP マクロを使用してイベント マップを開始し、各イベントのマクロ エントリを追加し、END_EVENT_MAP マクロを使用してイベント マップを完成させます。

イベント マップと BEGIN_EVENT_MAP マクロの詳細については、「ActiveX コントロール: イベント」を参照してください。

必要条件

ヘッダー afxctl.h

END_EVENT_MAP

END_EVENT_MAP マクロを使用して、イベント マップの定義を終了します。

END_EVENT_MAP()

必要条件

ヘッダー afxctl.h

EVENT_CUSTOM

カスタム イベントのイベント マップ エントリを定義します。

EVENT_CUSTOM(pszName, pfnFire,  vtsParams)

パラメーター

pszName
イベントの名前です。

pfnFire
イベント発生関数の名前。

vtsParams
関数のパラメーター リストを指定する 1 つ以上の定数のスペース区切りのリスト。

解説

vtsParams パラメーターは、定数からVTS_スペースで区切られた値のリストです。 これらの値の 1 つ以上をスペース (コンマではなく) で区切って指定すると、関数のパラメーター リストが指定されます。 次に例を示します。

VTS_COLOR VTS_FONT

は、RGB カラー値を表す 32 ビット整数を含むリストと、OLE フォント オブジェクトのインターフェイスへの IFontDisp ポインターを指定します。

定数とその意味は VTS_ 次のとおりです。

記号 パラメーターの型
VTS_I2 short
VTS_I4 long
VTS_R4 float
VTS_R8 double
VTS_COLOR OLE_COLOR
VTS_CY 通貨
VTS_DATE DATE
VTS_BSTR constChar*
VTS_DISPATCH LPDISPATCH
VTS_FONT IFontDispatch*
VTS_HANDLE HANDLE
VTS_SCODE SCODE
VTS_BOOL BOOL
VTS_VARIANT const VARIANT*
VTS_PVARIANT VARIANT*
VTS_UNKNOWN LPUNKNOWN
VTS_OPTEXCLUSIVE OLE_OPTEXCLUSIVE
VTS_PICTURE IPictureDisp*
VTS_TRISTATE OLE_TRISTATE
VTS_XPOS_PIXELS OLE_XPOS_PIXELS
VTS_YPOS_PIXELS OLE_YPOS_PIXELS
VTS_XSIZE_PIXELS OLE_XSIZE_PIXELS
VTS_YSIZE_PIXELS OLE_YSIZE_PIXELS
TS_XPOS_HIMETRIC OLE_XPOS_HIMETRIC
VTS_YPOS_HIMETRIC OLE_YPOS_HIMETRIC
VTS_XSIZE_HIMETRIC OLE_XSIZE_HIMETRIC
VTS_YSIZE_HIMETRIC OLE_YSIZE_HIMETRIC

Note

バリアント データ定数へのポインターを提供するVTS_FONTとVTS_PICTUREを除き、すべてのバリアント型に対して追加のバリアント定数が定義されています。 これらの定数には、規則を使用して名前が VTS_Pconstantname 付けられます。 たとえば、VTS_PCOLORはVTS_COLOR定数へのポインターです。

必要条件

ヘッダー afxctl.h

EVENT_CUSTOM_ID

dispid で 指定されたディスパッチ ID に属するカスタム イベントのイベント発生関数を定義します

EVENT_CUSTOM_ID(
    pszName,
    dispid,
    pfnFire,
    vtsParams)

パラメーター

pszName
イベントの名前です。

dispid
イベントの発生時にコントロールによって使用されるディスパッチ ID。

pfnFire
イベント発生関数の名前。

vtsParams
イベントが発生したときにコントロール コンテナーに渡されるパラメーターの変数リスト。

解説

vtsParams 引数は、定数からVTS_スペースで区切られた値のリストです。 これらの値の 1 つ以上をコンマではなくスペースで区切って指定すると、関数のパラメーター リストが指定されます。 次に例を示します。

VTS_COLOR VTS_FONT

は、RGB カラー値を表す 32 ビット整数を含むリストと、OLE フォント オブジェクトのインターフェイスへの IFontDisp ポインターを指定します。

定数のVTS_一覧については、「EVENT_CUSTOM」を参照してください

必要条件

ヘッダー afxctl.h

ON_OLEVERB

このマクロは、カスタム動詞をコントロールの特定のメンバー関数にマップするメッセージ マップ エントリを定義します。

ON_OLEVERB(idsVerbName,  memberFxn)

パラメーター

idsVerbName
動詞の名前の文字列リソース ID。

memberFxn
動詞が呼び出されたときにフレームワークによって呼び出される関数。

解説

リソース エディターを使用して、文字列テーブルに追加されるカスタム動詞名を作成できます。

memberFxn の関数プロトタイプは次のとおりです。

BOOL memberFxn(
   LPMSG    lpMsg,
   HWND     hWndParent,
   LPCRECT  lpRect);

lpMsg、hWndParentおよび lpRect パラメーターの値は、メンバー関数のIOleObject::DoVerb対応するパラメーターから取得されます。

必要条件

ヘッダー afxole.h

ON_STDOLEVERB

標準動詞の既定の動作をオーバーライドするには、このマクロを使用します。

ON_STDOLEVERB(iVerb, memberFxn)

パラメーター

iVerb
オーバーライドされる動詞の標準動詞インデックス。

memberFxn
動詞が呼び出されたときにフレームワークによって呼び出される関数。

解説

標準動詞インデックスは、アクションの後に続く形式 OLEIVERB_です。 OLEIVERB_SHOW、OLEIVERB_HIDE、およびOLEIVERB_UIACTIVATEは、標準動詞の例です。

memberFxn パラメーターとして使用する関数プロトタイプの説明については、ON_OLEVERB参照してください。

必要条件

ヘッダー afxole.h

関連項目

マクロとグローバル