次の方法で共有


イベント シンク マップ

埋め込み 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

関連項目

マクロとグローバル