Bagikan melalui


Peta Sink Peristiwa

Ketika kontrol OLE yang disematkan menembakkan peristiwa, kontainer kontrol menerima peristiwa menggunakan mekanisme, yang disebut "peta sink peristiwa," yang disediakan oleh MFC. Peta sink kejadian ini menunjuk fungsi handler untuk setiap peristiwa tertentu, serta parameter peristiwa tersebut. Untuk informasi selengkapnya tentang peta sink peristiwa, lihat artikel Kontainer Kontrol ActiveX.

Peta Sink Peristiwa

Nama Deskripsi
BEGIN_EVENTSINK_MAP Memulai definisi peta sink peristiwa.
DECLARE_EVENTSINK_MAP Mendeklarasikan peta sink peristiwa.
END_EVENTSINK_MAP Mengakhiri definisi peta sink peristiwa.
ON_EVENT Menentukan penanganan aktivitas untuk peristiwa tertentu.
ON_EVENT_RANGE Menentukan penanganan aktivitas untuk peristiwa tertentu yang diaktifkan dari sekumpulan kontrol OLE.
ON_EVENT_REFLECT Menerima peristiwa yang diaktifkan oleh kontrol sebelum ditangani oleh kontainer kontrol.
ON_PROPNOTIFY Menentukan handler untuk menangani pemberitahuan properti dari kontrol OLE.
ON_PROPNOTIFY_RANGE Menentukan handler untuk menangani pemberitahuan properti dari sekumpulan kontrol OLE.
ON_PROPNOTIFY_REFLECT Menerima pemberitahuan properti yang dikirim oleh kontrol sebelum ditangani oleh kontainer kontrol.

BEGIN_EVENTSINK_MAP

Memulai definisi peta sink peristiwa Anda.

BEGIN_EVENTSINK_MAP(theClass, baseClass)

Parameter

theClass
Menentukan nama kelas kontrol yang peta sink kejadiannya.

baseClass
Menentukan nama kelas dasar dari theClass.

Keterangan

Dalam file implementasi (.cpp) yang menentukan fungsi anggota untuk kelas Anda, mulai peta sink peristiwa dengan makro BEGIN_EVENTSINK_MAP, lalu tambahkan entri makro untuk setiap peristiwa yang akan diberi tahu, dan selesaikan peta sink peristiwa dengan makro END_EVENTSINK_MAP.

Untuk informasi selengkapnya tentang peta sink peristiwa dan kontainer kontrol OLE, lihat artikel Kontainer Kontrol ActiveX.

Persyaratan

Header afxdisp.h

DECLARE_EVENTSINK_MAP

Kontainer OLE dapat menyediakan peta sink peristiwa untuk menentukan peristiwa yang akan diberitahukan kontainer Anda.

DECLARE_EVENTSINK_MAP()

Keterangan

Gunakan makro DECLARE_EVENTSINK_MAP di akhir deklarasi kelas Anda. Kemudian, di . File CPP yang menentukan fungsi anggota untuk kelas , gunakan makro BEGIN_EVENTSINK_MAP, entri makro untuk setiap peristiwa yang akan diberi tahu, dan makro END_EVENTSINK_MAP untuk mendeklarasikan akhir daftar sink peristiwa.

Untuk informasi selengkapnya tentang peta sink peristiwa, lihat artikel Kontainer Kontrol ActiveX.

Persyaratan

Header afxwin.h

END_EVENTSINK_MAP

Mengakhiri definisi peta sink peristiwa Anda.

END_EVENTSINK_MAP()

Persyaratan

Header afxdisp.h

ON_EVENT

Gunakan makro ON_EVENT untuk menentukan fungsi penanganan aktivitas untuk peristiwa yang diaktifkan oleh kontrol OLE.

ON_EVENT(theClass, id, dispid, pfnHandler,  vtsParams)

Parameter

theClass
Kelas tempat peta sink peristiwa ini berada.

id
ID kontrol kontrol OLE.

dispid
ID pengiriman peristiwa yang dipicu oleh kontrol.

pfnHandler
Penunjuk ke fungsi anggota yang menangani peristiwa. Fungsi ini harus memiliki jenis pengembalian BOOL, dan jenis parameter yang cocok dengan parameter peristiwa (lihat vtsParams). Fungsi harus mengembalikan TRUE untuk menunjukkan peristiwa ditangani; jika tidak FALSE.

vtsParams
Urutan konstanta VTS_ yang menentukan jenis parameter untuk peristiwa tersebut. Ini adalah konstanta yang sama yang digunakan dalam entri peta pengiriman seperti DISP_FUNCTION.

Keterangan

Argumen vtsParams adalah daftar nilai yang dipisahkan spasi dari konstanta VTS_ . Satu atau beberapa nilai ini dipisahkan oleh spasi (bukan koma) menentukan daftar parameter fungsi. Contohnya:

VTS_I2 VTS_BOOL

menentukan daftar yang berisi bilangan bulat pendek diikuti oleh BOOL.

Untuk daftar konstanta VTS_ , lihat EVENT_CUSTOM.

Persyaratan

Header afxdisp.h

ON_EVENT_RANGE

Gunakan makro ON_EVENT_RANGE untuk menentukan fungsi penanganan aktivitas untuk peristiwa yang diaktifkan oleh kontrol OLE apa pun yang memiliki ID kontrol dalam rentang ID yang berdekatan.

ON_EVENT_RANGE(theClass, idFirst, idLast, dispid, pfnHandler,  vtsParams)

Parameter

theClass
Kelas tempat peta sink peristiwa ini berada.

idFirst
ID kontrol kontrol OLE pertama dalam rentang.

idLast
ID kontrol kontrol OLE terakhir dalam rentang.

dispid
ID pengiriman peristiwa yang dipicu oleh kontrol.

pfnHandler
Penunjuk ke fungsi anggota yang menangani peristiwa. Fungsi ini harus memiliki jenis pengembalian BOOL, parameter pertama jenis UINT (untuk ID kontrol), dan jenis parameter tambahan yang cocok dengan parameter peristiwa (lihat vtsParams). Fungsi harus mengembalikan TRUE untuk menunjukkan peristiwa ditangani; jika tidak FALSE.

vtsParams
Urutan konstanta VTS_ yang menentukan jenis parameter untuk peristiwa tersebut. Konstanta pertama harus berjenis VTS_I4, untuk ID kontrol. Ini adalah konstanta yang sama yang digunakan dalam entri peta pengiriman seperti DISP_FUNCTION.

Keterangan

Argumen vtsParams adalah daftar nilai yang dipisahkan spasi dari konstanta VTS_ . Satu atau beberapa nilai ini dipisahkan oleh spasi (bukan koma) menentukan daftar parameter fungsi. Contohnya:

VTS_I2 VTS_BOOL

menentukan daftar yang berisi bilangan bulat pendek diikuti oleh BOOL.

Untuk daftar konstanta VTS_ , lihat EVENT_CUSTOM.

Contoh

Contoh berikut menunjukkan penanganan aktivitas, untuk peristiwa MouseDown, yang diimplementasikan untuk tiga kontrol ( IDC_MYCTRL1 melalui IDC_MYCTRL3). Fungsi penanganan aktivitas, OnRangeMouseDown, dideklarasikan dalam file header kelas dialog ( CMyDlg) sebagai:

BOOL OnRangeMouseDown(UINT CtlID, short MouseButton, short Shift,
   long x, long y);

Kode di bawah ini didefinisikan dalam file implementasi kelas dialog.

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()

Persyaratan

Header afxdisp.h

ON_EVENT_REFLECT

Makro ON_EVENT_REFLECT, ketika digunakan dalam peta sink peristiwa kelas pembungkus kontrol OLE, menerima peristiwa yang dipicu oleh kontrol sebelum ditangani oleh kontainer kontrol.

ON_EVENT_REFLECT(theClass,  dispid, pfnHandler,  vtsParams)

Parameter

theClass
Kelas tempat peta sink peristiwa ini berada.

dispid
ID pengiriman peristiwa yang dipicu oleh kontrol.

pfnHandler
Penunjuk ke fungsi anggota yang menangani peristiwa. Fungsi ini harus memiliki jenis pengembalian BOOL dan jenis parameter yang cocok dengan parameter peristiwa (lihat vtsParams). Fungsi harus mengembalikan TRUE untuk menunjukkan peristiwa ditangani; jika tidak FALSE.

vtsParams
Urutan konstanta VTS_ yang menentukan jenis parameter untuk peristiwa tersebut. Ini adalah konstanta yang sama yang digunakan dalam entri peta pengiriman seperti DISP_FUNCTION.

Keterangan

Argumen vtsParams adalah daftar nilai yang dipisahkan spasi dari konstanta VTS_ .

Satu atau beberapa nilai ini dipisahkan oleh spasi (bukan koma) menentukan daftar parameter fungsi. Contohnya:

VTS_I2 VTS_BOOL

menentukan daftar yang berisi bilangan bulat pendek diikuti oleh BOOL.

Untuk daftar konstanta VTS_ , lihat EVENT_CUSTOM.

Persyaratan

Header afxdisp.h

ON_PROPNOTIFY

Gunakan makro ON_PROPNOTIFY untuk menentukan entri peta sink peristiwa untuk menangani pemberitahuan properti dari kontrol OLE.

ON_PROPNOTIFY(theClass, id, dispid, pfnRequest, pfnChanged)

Parameter

theClass
Kelas tempat peta sink peristiwa ini berada.

id
ID kontrol kontrol OLE.

dispid
ID pengiriman properti yang terlibat dalam pemberitahuan.

pfnRequest
Penunjuk ke fungsi anggota yang menangani OnRequestEdit pemberitahuan untuk properti ini. Fungsi ini harus memiliki jenis pengembalian BOOL dan parameter BOOL* . Fungsi ini harus mengatur parameter ke TRUE untuk memungkinkan properti berubah dan FALSE melarang. Fungsi harus mengembalikan TRUE untuk menunjukkan pemberitahuan ditangani; jika tidak FALSE.

pfnChanged
Penunjuk ke fungsi anggota yang menangani OnChanged pemberitahuan untuk properti ini. Fungsi harus memiliki jenis pengembalian BOOL dan parameter UINT. Fungsi harus mengembalikan TRUE untuk menunjukkan bahwa pemberitahuan ditangani; jika tidak FALSE.

Keterangan

Argumen vtsParams adalah daftar nilai yang dipisahkan spasi dari konstanta VTS_ . Satu atau beberapa nilai ini dipisahkan oleh spasi (bukan koma) menentukan daftar parameter fungsi. Contohnya:

VTS_I2 VTS_BOOL

menentukan daftar yang berisi bilangan bulat pendek diikuti oleh BOOL.

Untuk daftar konstanta VTS_ , lihat EVENT_CUSTOM.

ON_PROPNOTIFY_RANGE

Gunakan makro ON_PROPNOTIFY_RANGE untuk menentukan entri peta sink peristiwa untuk menangani pemberitahuan properti dari kontrol OLE apa pun yang memiliki ID kontrol dalam rentang ID yang berdekatan.

ON_PROPNOTIFY_RANGE(theClass, idFirst, idLast, dispid, pfnRequest, pfnChanged)

Parameter

theClass
Kelas tempat peta sink peristiwa ini berada.

idFirst
ID kontrol kontrol OLE pertama dalam rentang.

idLast
ID kontrol kontrol OLE terakhir dalam rentang.

dispid
ID pengiriman properti yang terlibat dalam pemberitahuan.

pfnRequest
Penunjuk ke fungsi anggota yang menangani OnRequestEdit pemberitahuan untuk properti ini. Fungsi ini harus memiliki BOOL jenis pengembalian dan UINT BOOL* parameter. Fungsi harus mengatur parameter ke TRUE untuk memungkinkan properti berubah dan FALSE melarang. Fungsi harus mengembalikan TRUE untuk menunjukkan bahwa pemberitahuan ditangani; jika tidak FALSE.

pfnChanged
Penunjuk ke fungsi anggota yang menangani OnChanged pemberitahuan untuk properti ini. Fungsi harus memiliki BOOL jenis pengembalian dan UINT parameter. Fungsi harus mengembalikan TRUE untuk menunjukkan bahwa pemberitahuan ditangani; jika tidak FALSE.

Persyaratan

Header afxdisp.h

ON_PROPNOTIFY_REFLECT

Makro ON_PROPNOTIFY_REFLECT, saat digunakan dalam peta sink peristiwa kelas pembungkus kontrol OLE, menerima pemberitahuan properti yang dikirim oleh kontrol sebelum ditangani oleh kontainer kontrol.

ON_PROPNOTIFY_REFLECT(theClass, dispid, pfnRequest, pfnChanged)

Parameter

theClass
Kelas tempat peta sink peristiwa ini berada.

dispid
ID pengiriman properti yang terlibat dalam pemberitahuan.

pfnRequest
Penunjuk ke fungsi anggota yang menangani OnRequestEdit pemberitahuan untuk properti ini. Fungsi ini harus memiliki jenis pengembalian BOOL dan parameter BOOL* . Fungsi ini harus mengatur parameter ke TRUE untuk memungkinkan properti berubah dan FALSE melarang. Fungsi harus mengembalikan TRUE untuk menunjukkan pemberitahuan ditangani; jika tidak FALSE.

pfnChanged
Penunjuk ke fungsi anggota yang menangani OnChanged pemberitahuan untuk properti ini. Fungsi harus memiliki jenis pengembalian BOOL dan tanpa parameter. Fungsi harus mengembalikan TRUE untuk menunjukkan pemberitahuan ditangani; jika tidak FALSE.

Persyaratan

Header afxdisp.h

Lihat juga

Makro dan Global