次の方法で共有


イベント マップ

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

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

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

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

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

イベント マップをサポートするために、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 コントロール: イベント」を参照してください。

要件

Header afxctl.h

BEGIN_EVENT_MAP

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

BEGIN_EVENT_MAP(theClass,  baseClass)

パラメーター

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

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

解説

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

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

要件

Header afxctl.h

END_EVENT_MAP

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

END_EVENT_MAP()

要件

Header 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 CURRENCY
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定数へのポインターです。

要件

Header 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」を参照してください。

要件

Header afxctl.h

ON_OLEVERB

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

ON_OLEVERB(idsVerbName,  memberFxn)

パラメーター

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

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

解説

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

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

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

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

要件

Header afxole.h

ON_STDOLEVERB

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

ON_STDOLEVERB(iVerb, memberFxn)

パラメーター

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

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

解説

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

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

要件

Header afxole.h

関連項目

マクロとグローバル