イベント シンク マップ
埋め込み 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 コントロール コンテナーに関する記事 を参照してください。
必要条件
ヘッダー afxdisp.h
DECLARE_EVENTSINK_MAP
OLE コンテナーは、コンテナーに通知されるイベントを指定するイベント シンク マップを提供できます。
DECLARE_EVENTSINK_MAP()
解説
クラス宣言の最後に DECLARE_EVENTSINK_MAP マクロを使用します。 次に、クラスのメンバー関数を定義する CPP ファイル、BEGIN_EVENTSINK_MAP マクロ、通知される各イベントのマクロ エントリ、およびイベント シンク リストの末尾を宣言する END_EVENTSINK_MAP マクロを使用します。
イベント シンク マップの詳細については、ActiveX コントロール コンテナーに関する記事を参照してください。
必要条件
ヘッダー afxwin.h
END_EVENTSINK_MAP
イベント シンク マップの定義を終了します。
END_EVENTSINK_MAP()
必要条件
ヘッダー afxdisp.h
ON_EVENT
ON_EVENT マクロを使用して、OLE コントロールによって発生するイベントのイベント ハンドラー関数を定義します。
ON_EVENT(theClass, id, dispid, pfnHandler, vtsParams)
パラメーター
theClass
このイベント シンク マップが属するクラス。
id
OLE コントロールのコントロール ID。
dispid
コントロールによって発生したイベントのディスパッチ ID。
pfnHandler
イベントを処理するメンバー関数へのポインター。 この関数には、BOOL 戻り値の型と、イベントのパラメーターに一致するパラメーター型が必要です (vtsParams を参照)。 この関数は、イベントが処理されたことを示す TRUE を返す必要があります。それ以外の場合は FAL Standard Edition。
vtsParams
イベントのパラメーターの 型を指定するVTS_ 定数のシーケンス。 これらは、DISP_FUNCTIONなどのディスパッチ マップ エントリで使用される定数と同じです。
解説
vtsParams 引数は、VTS_定数の値のスペース区切りのリストです。 これらの値の 1 つ以上をスペース (コンマではなく) で区切って指定すると、関数のパラメーター リストが指定されます。 次に例を示します。
VTS_I2 VTS_BOOL
は、短い整数の後に BOOL が続くリストを指定します。
VTS_定数の一覧については、「EVENT_CUSTOM」を参照してください。
必要条件
ヘッダー 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 を返す必要があります。それ以外の場合は FAL Standard Edition。
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()
必要条件
ヘッダー afxdisp.h
ON_EVENT_REFLECT
ON_EVENT_REFLECT マクロは、OLE コントロールのラッパー クラスのイベント シンク マップで使用される場合、コントロールのコンテナーによって処理される前に、コントロールによって発生したイベントを受け取ります。
ON_EVENT_REFLECT(theClass, dispid, pfnHandler, vtsParams)
パラメーター
theClass
このイベント シンク マップが属するクラス。
dispid
コントロールによって発生したイベントのディスパッチ ID。
pfnHandler
イベントを処理するメンバー関数へのポインター。 この関数には、イベントのパラメーターに一致する BOOL 戻り値の型とパラメーター型が必要です (vtsParams を参照)。 この関数は、イベントが処理されたことを示す TRUE を返す必要があります。それ以外の場合は FAL Standard Edition。
vtsParams
イベントのパラメーターの 型を指定するVTS_ 定数のシーケンス。 これらは、DISP_FUNCTIONなどのディスパッチ マップ エントリで使用される定数と同じです。
解説
vtsParams 引数は、VTS_定数の値のスペース区切りのリストです。
これらの値の 1 つ以上をスペース (コンマではなく) で区切って指定すると、関数のパラメーター リストが指定されます。 次に例を示します。
VTS_I2 VTS_BOOL
は、短い整数の後に BOOL が続くリストを指定します。
VTS_定数の一覧については、「EVENT_CUSTOM」を参照してください。
必要条件
ヘッダー afxdisp.h
ON_PROPNOTIFY
ON_PROPNOTIFY マクロを使用して、OLE コントロールからのプロパティ通知を処理するためのイベント シンク マップ エントリを定義します。
ON_PROPNOTIFY(theClass, id, dispid, pfnRequest, pfnChanged)
パラメーター
theClass
このイベント シンク マップが属するクラス。
id
OLE コントロールのコントロール ID。
dispid
通知に関係するプロパティのディスパッチ ID。
pfnRequest
このプロパティの通知を OnRequestEdit
処理するメンバー関数へのポインター。 この関数には、BOOL 戻り値の型と BOOL* パラメーターが必要です。 この関数では、プロパティの変更を許可し、FAL Standard Edition を許可するには、パラメーターを TRUE に設定する必要があります。 この関数は、通知が処理されたことを示す TRUE を返す必要があります。それ以外の場合は FAL Standard Edition。
pfnChanged
このプロパティの通知を OnChanged
処理するメンバー関数へのポインター。 この関数には、BOOL 戻り値の型と UINT パラメーターが必要です。 この関数は、通知が処理されたことを示す TRUE を返す必要があります。それ以外の場合は FAL Standard Edition。
解説
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*
必要です。 この関数は、プロパティの変更を許可し、FAL Standard Edition を許可しないようにパラメーターを TRUE に設定する必要があります。 この関数は、通知が処理されたことを示す TRUE を返す必要があります。それ以外の場合は FAL Standard Edition。
pfnChanged
このプロパティの通知を OnChanged
処理するメンバー関数へのポインター。 関数には戻り値の BOOL
型とパラメーターが UINT
必要です。 この関数は、通知が処理されたことを示す TRUE を返す必要があります。それ以外の場合は FAL Standard Edition。
必要条件
ヘッダー afxdisp.h
ON_PROPNOTIFY_REFLECT
ON_PROPNOTIFY_REFLECT マクロは、OLE コントロールのラッパー クラスのイベント シンク マップで使用すると、コントロールのコンテナーによって処理される前に、コントロールから送信されたプロパティ通知を受け取ります。
ON_PROPNOTIFY_REFLECT(theClass, dispid, pfnRequest, pfnChanged)
パラメーター
theClass
このイベント シンク マップが属するクラス。
dispid
通知に関係するプロパティのディスパッチ ID。
pfnRequest
このプロパティの通知を OnRequestEdit
処理するメンバー関数へのポインター。 この関数には、BOOL 戻り値の型と BOOL* パラメーターが必要です。 この関数では、プロパティの変更を許可し、FAL Standard Edition を許可するには、パラメーターを TRUE に設定する必要があります。 この関数は、通知が処理されたことを示す TRUE を返す必要があります。それ以外の場合は FAL Standard Edition。
pfnChanged
このプロパティの通知を OnChanged
処理するメンバー関数へのポインター。 この関数には、BOOL 戻り値の型とパラメーターがない必要があります。 この関数は、通知が処理されたことを示す TRUE を返す必要があります。それ以外の場合は FAL Standard Edition。
必要条件
ヘッダー afxdisp.h