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