イベント シンク マップ
埋め込み OLE コントロールがイベントを発生させると、コントロールのコンテナーは、MFC によって提供される "イベント シンク マップ" と呼ばれるメカニズムを使用してイベントを受け取ります。 このイベント シンク マップは、特定のイベントごとのハンドラー関数と、それらのイベントのパラメーターを指定します。 イベント シンク マップの詳細については、「 ActiveX コントロール コンテナー」を参照してください。
イベント シンク マップ
名前 | 説明 |
---|---|
BEGIN_EVENTSINK_MAP | イベント シンク マップの定義を開始します。 |
DECLARE_EVENTSINK_MAP | イベント シンク マップを宣言します。 |
END_EVENTSINK_MAP | イベント シンク マップの定義を終了します。 |
ON_EVENT | 特定のイベントのイベント ハンドラーを定義します。 |
ON_EVENT_RANGE | OLE コントロールのセットから発生した特定のイベントのイベント ハンドラーを定義します。 |
ON_EVENT_REFLECT | コントロールのコンテナーによって処理される前に、コントロールによって発生したイベントを受信します。 |
ON_PROPNOTIFY | OLE コントロールからのプロパティ通知を処理するためのハンドラーを定義します。 |
ON_PROPNOTIFY_RANGE | 一連の OLE コントロールからのプロパティ通知を処理するためのハンドラーを定義します。 |
ON_PROPNOTIFY_REFLECT | コントロールのコンテナーによって処理される前に、コントロールによって送信されたプロパティ通知を受信します。 |
BEGIN_EVENTSINK_MAP
イベント シンク マップの定義を開始します。
BEGIN_EVENTSINK_MAP(theClass, baseClass)
パラメーター
theClass
イベント シンク マップを持つコントロール クラスの名前を指定します。
baseClass
クラスの基底クラスの名前を指定します。
解説
クラスのメンバー関数を定義する実装 (.cpp) ファイルで、BEGIN_EVENTSINK_MAP マクロを使用してイベント シンク マップを開始し、通知する各イベントのマクロ エントリを追加し、END_EVENTSINK_MAP マクロを使用してイベント シンク マップを完了します。
イベント シンク マップと OLE コントロール コンテナーの詳細については、「 ActiveX コントロール コンテナー」を参照してください。
要件
Header afxdisp.h
DECLARE_EVENTSINK_MAP
OLE コンテナーは、コンテナーに通知されるイベントを指定するイベント シンク マップを提供できます。
DECLARE_EVENTSINK_MAP()
解説
クラス宣言の最後に DECLARE_EVENTSINK_MAP マクロを使用します。 次に、クラスのメンバー関数を定義する CPP ファイル、BEGIN_EVENTSINK_MAP マクロ、通知される各イベントのマクロ エントリ、およびイベント シンク リストの末尾を宣言する END_EVENTSINK_MAP マクロを使用します。
イベント シンク マップの詳細については、「 ActiveX コントロール コンテナー」を参照してください。
要件
Header afxwin.h
END_EVENTSINK_MAP
イベント シンク マップの定義を終了します。
END_EVENTSINK_MAP()
要件
Header afxdisp.h
ON_EVENT
ON_EVENT マクロを使用して、OLE コントロールによって発生するイベントのイベント ハンドラー関数を定義します。
ON_EVENT(theClass, id, dispid, pfnHandler, vtsParams)
パラメーター
theClass
このイベント シンク マップが属するクラス。
id
OLE コントロールのコントロール ID。
dispid
コントロールによって発生したイベントのディスパッチ ID。
pfnHandler
イベントを処理するメンバー関数へのポインター。 この関数には、BOOL 戻り値の型と、イベントのパラメーターに一致するパラメーター型が必要です ( vtsParamsを参照してください)。 この関数は、イベントが処理されたことを示す TRUE を返す必要があります。それ以外の場合は FALSE。
vtsParams
イベントのパラメーターの型を指定する VTS_ 定数のシーケンス。 これらは、DISP_FUNCTIONなどのディスパッチ マップ エントリで使用される定数と同じです。
解説
引数 vtsParams は、 VTS_ 定数の値のスペース区切りのリストです。 これらの値の 1 つ以上をスペース (コンマではなく) で区切って指定すると、関数のパラメーター リストが指定されます。 次に例を示します。
VTS_I2 VTS_BOOL
は、短い整数の後に BOOL が続くリストを指定します。
VTS_定数の一覧については、「EVENT_CUSTOM」を参照してください。
要件
Header afxdisp.h
ON_EVENT_RANGE
ON_EVENT_RANGE マクロを使用して、連続した ID 範囲内のコントロール ID を持つ OLE コントロールによって発生するイベントのイベント ハンドラー関数を定義します。
ON_EVENT_RANGE(theClass, idFirst, idLast, dispid, pfnHandler, vtsParams)
パラメーター
theClass
このイベント シンク マップが属するクラス。
idFirst
範囲内の最初の OLE コントロールのコントロール ID。
idLast
範囲内の最後の OLE コントロールのコントロール ID。
dispid
コントロールによって発生したイベントのディスパッチ ID。
pfnHandler
イベントを処理するメンバー関数へのポインター。 この関数には、BOOL 戻り値の型、UINT 型の最初のパラメーター (コントロール ID 用)、およびイベントのパラメーターに一致する追加のパラメーター型が必要です ( vtsParamsを参照)。 この関数は、イベントが処理されたことを示す TRUE を返す必要があります。それ以外の場合は FALSE。
vtsParams
イベントのパラメーターの型を指定する VTS_ 定数のシーケンス。 最初の定数は、コントロール ID のVTS_I4型である必要があります。 これらは、DISP_FUNCTIONなどのディスパッチ マップ エントリで使用される定数と同じです。
解説
引数 vtsParams は、 VTS_ 定数の値のスペース区切りのリストです。 これらの値の 1 つ以上をスペース (コンマではなく) で区切って指定すると、関数のパラメーター リストが指定されます。 次に例を示します。
VTS_I2 VTS_BOOL
は、短い整数の後に BOOL が続くリストを指定します。
VTS_定数の一覧については、「EVENT_CUSTOM」を参照してください。
例
次の例は、3 つのコントロール (IDC_MYCTRL1から IDC_MYCTRL3) に実装された MouseDown イベントのイベント ハンドラーを示しています。 イベント ハンドラー関数 ( OnRangeMouseDown
) は、ダイアログ クラス ( CMyDlg
) のヘッダー ファイルで次のように宣言されます。
BOOL OnRangeMouseDown(UINT CtlID, short MouseButton, short Shift,
long x, long y);
次のコードは、ダイアログ クラスの実装ファイルで定義されています。
BEGIN_EVENTSINK_MAP(CMyDlg, CDialog)
ON_EVENT_RANGE(CMyDlg, IDC_MYCTRL1, IDC_MYCTRL3, -605, OnRangeMouseDown,
VTS_I4 VTS_I2 VTS_I2 VTS_I4 VTS_I4)
END_EVENTSINK_MAP()
要件
Header afxdisp.h
ON_EVENT_REFLECT
ON_EVENT_REFLECT マクロは、OLE コントロールのラッパー クラスのイベント シンク マップで使用される場合、コントロールのコンテナーによって処理される前に、コントロールによって発生したイベントを受け取ります。
ON_EVENT_REFLECT(theClass, dispid, pfnHandler, vtsParams)
パラメーター
theClass
このイベント シンク マップが属するクラス。
dispid
コントロールによって発生したイベントのディスパッチ ID。
pfnHandler
イベントを処理するメンバー関数へのポインター。 この関数には、イベントのパラメーターに一致する BOOL 戻り値の型とパラメーター型が必要です ( vtsParamsを参照してください)。 この関数は、イベントが処理されたことを示す TRUE を返す必要があります。それ以外の場合は FALSE。
vtsParams
イベントのパラメーターの型を指定する VTS_ 定数のシーケンス。 これらは、DISP_FUNCTIONなどのディスパッチ マップ エントリで使用される定数と同じです。
解説
引数 vtsParams は、 VTS_ 定数の値のスペース区切りのリストです。
これらの値の 1 つ以上をスペース (コンマではなく) で区切って指定すると、関数のパラメーター リストが指定されます。 次に例を示します。
VTS_I2 VTS_BOOL
は、短い整数の後に BOOL が続くリストを指定します。
VTS_定数の一覧については、「EVENT_CUSTOM」を参照してください。
要件
Header afxdisp.h
ON_PROPNOTIFY
ON_PROPNOTIFY マクロを使用して、OLE コントロールからのプロパティ通知を処理するためのイベント シンク マップ エントリを定義します。
ON_PROPNOTIFY(theClass, id, dispid, pfnRequest, pfnChanged)
パラメーター
theClass
このイベント シンク マップが属するクラス。
id
OLE コントロールのコントロール ID。
dispid
通知に関係するプロパティのディスパッチ ID。
pfnRequest
このプロパティの OnRequestEdit
通知を処理するメンバー関数へのポインター。 この関数には、BOOL 戻り値の型と BOOL* パラメーターが必要です。 この関数では、プロパティを変更できるようにパラメーターを TRUE に設定し、FALSE を許可しないようにする必要があります。 この関数は、通知が処理されたことを示す TRUE を返す必要があります。それ以外の場合は FALSE。
pfnChanged
このプロパティの OnChanged
通知を処理するメンバー関数へのポインター。 この関数には、BOOL 戻り値の型と UINT パラメーターが必要です。 この関数は、通知が処理されたことを示す TRUE を返す必要があります。それ以外の場合は FALSE。
解説
引数 vtsParams は、 VTS_ 定数の値のスペース区切りのリストです。 これらの値の 1 つ以上をスペース (コンマではなく) で区切って指定すると、関数のパラメーター リストが指定されます。 次に例を示します。
VTS_I2 VTS_BOOL
は、短い整数の後に BOOL が続くリストを指定します。
VTS_定数の一覧については、「EVENT_CUSTOM」を参照してください。
ON_PROPNOTIFY_RANGE
ON_PROPNOTIFY_RANGE マクロを使用して、連続した ID 範囲内のコントロール ID を持つ OLE コントロールからのプロパティ通知を処理するためのイベント シンク マップ エントリを定義します。
ON_PROPNOTIFY_RANGE(theClass, idFirst, idLast, dispid, pfnRequest, pfnChanged)
パラメーター
theClass
このイベント シンク マップが属するクラス。
idFirst
範囲内の最初の OLE コントロールのコントロール ID。
idLast
範囲内の最後の OLE コントロールのコントロール ID。
dispid
通知に関係するプロパティのディスパッチ ID。
pfnRequest
このプロパティの OnRequestEdit
通知を処理するメンバー関数へのポインター。 この関数には、 BOOL
戻り値の型と UINT
および BOOL*
パラメーターが必要です。 この関数では、プロパティを変更できるようにパラメーターを TRUE に設定し、FALSE を許可しないようにする必要があります。 この関数は、通知が処理されたことを示す TRUE を返す必要があります。それ以外の場合は FALSE。
pfnChanged
このプロパティの OnChanged
通知を処理するメンバー関数へのポインター。 関数には、 BOOL
戻り値の型と UINT
パラメーターが必要です。 この関数は、通知が処理されたことを示す TRUE を返す必要があります。それ以外の場合は FALSE。
要件
Header afxdisp.h
ON_PROPNOTIFY_REFLECT
ON_PROPNOTIFY_REFLECT マクロは、OLE コントロールのラッパー クラスのイベント シンク マップで使用すると、コントロールのコンテナーによって処理される前に、コントロールから送信されたプロパティ通知を受け取ります。
ON_PROPNOTIFY_REFLECT(theClass, dispid, pfnRequest, pfnChanged)
パラメーター
theClass
このイベント シンク マップが属するクラス。
dispid
通知に関係するプロパティのディスパッチ ID。
pfnRequest
このプロパティの OnRequestEdit
通知を処理するメンバー関数へのポインター。 この関数には、BOOL 戻り値の型と BOOL* パラメーターが必要です。 この関数では、プロパティを変更できるようにパラメーターを TRUE に設定し、FALSE を許可しないようにする必要があります。 この関数は、通知が処理されたことを示す TRUE を返す必要があります。それ以外の場合は FALSE。
pfnChanged
このプロパティの OnChanged
通知を処理するメンバー関数へのポインター。 この関数には、BOOL 戻り値の型とパラメーターがない必要があります。 この関数は、通知が処理されたことを示す TRUE を返す必要があります。それ以外の場合は FALSE。
要件
Header afxdisp.h