次の方法で共有


イベント シンク マップ

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

関連項目

マクロとグローバル