Bagikan melalui


Peta Peristiwa

Setiap kali kontrol ingin memberi tahu kontainernya bahwa beberapa tindakan (ditentukan oleh pengembang kontrol) telah terjadi (seperti penekanan tombol, klik mouse, atau perubahan pada status kontrol) itu memanggil fungsi pemecahan peristiwa. Fungsi ini memberi tahu kontainer kontrol bahwa beberapa tindakan penting telah terjadi dengan menembakkan peristiwa terkait.

Pustaka Kelas Microsoft Foundation menawarkan model pemrograman yang dioptimalkan untuk menembakkan peristiwa. Dalam model ini, "peta peristiwa" digunakan untuk menunjuk fungsi mana yang mengaktifkan peristiwa mana untuk kontrol tertentu. Peta peristiwa berisi satu makro untuk setiap peristiwa. Misalnya, peta peristiwa yang mengaktifkan peristiwa Klik stok mungkin terlihat seperti ini:

BEGIN_EVENT_MAP(CMyAxCtrl, COleControl)
EVENT_STOCK_CLICK()
END_EVENT_MAP()

EVENT_STOCK_CLICK Makro menunjukkan bahwa kontrol akan mengaktifkan peristiwa Klik stok setiap kali mendeteksi klik mouse. Untuk daftar peristiwa stok lainnya yang lebih rinci, lihat artikel Kontrol ActiveX: Peristiwa. Makro juga tersedia untuk menunjukkan peristiwa kustom.

Meskipun makro peta peristiwa penting, Anda umumnya tidak menyisipkannya secara langsung. Ini karena jendela Properti (dalam Tampilan Kelas) secara otomatis membuat entri peta peristiwa di file sumber Anda saat Anda menggunakannya untuk mengaitkan fungsi pemecahan peristiwa dengan peristiwa. Setiap kali Anda ingin mengedit atau menambahkan entri peta peristiwa, Anda dapat menggunakan jendela Properti .

Untuk mendukung peta peristiwa, MFC menyediakan makro berikut:

Makro Peta Peristiwa

Deklarasi dan Demarkasi Peta Peristiwa

Nama Deskripsi
DECLARE_EVENT_MAP Menyatakan bahwa peta peristiwa akan digunakan di kelas untuk memetakan peristiwa ke fungsi pemecahan peristiwa (harus digunakan dalam deklarasi kelas).
BEGIN_EVENT_MAP Memulai definisi peta peristiwa (harus digunakan dalam implementasi kelas).
END_EVENT_MAP Mengakhiri definisi peta peristiwa (harus digunakan dalam implementasi kelas).

Makro Pemetaan Peristiwa

Nama Deskripsi
EVENT_CUSTOM Menunjukkan fungsi pemecahan peristiwa mana yang akan mengaktifkan peristiwa yang ditentukan.
EVENT_CUSTOM_ID Menunjukkan fungsi penembakan peristiwa mana yang akan mengaktifkan peristiwa yang ditentukan, dengan ID pengiriman yang ditunjuk.

Makro Pemetaan Pesan

Nama Deskripsi
ON_OLEVERB Menunjukkan kata kerja kustom yang ditangani oleh kontrol OLE.
ON_STDOLEVERB Mengambil alih pemetaan kata kerja standar kontrol OLE.

DECLARE_EVENT_MAP

Setiap COleControlkelas -turunan dalam program Anda dapat menyediakan peta peristiwa untuk menentukan peristiwa yang akan diaktifkan kontrol Anda.

DECLARE_EVENT_MAP()

Keterangan

Gunakan makro DECLARE_EVENT_MAP di akhir deklarasi kelas Anda. Kemudian, dalam file .cpp yang menentukan fungsi anggota untuk kelas, gunakan makro BEGIN_EVENT_MAP, entri makro untuk setiap peristiwa kontrol, dan makro END_EVENT_MAP untuk mendeklarasikan akhir daftar peristiwa.

Untuk informasi selengkapnya tentang peta peristiwa, lihat artikel Kontrol ActiveX: Peristiwa.

Persyaratan

Header afxctl.h

BEGIN_EVENT_MAP

Memulai definisi peta peristiwa Anda.

BEGIN_EVENT_MAP(theClass,  baseClass)

Parameter

theClass
Menentukan nama kelas kontrol yang peta kejadiannya.

baseClass
Menentukan nama kelas dasar dari theClass.

Keterangan

Dalam file implementasi (.cpp) yang menentukan fungsi anggota untuk kelas Anda, mulai peta peristiwa dengan makro BEGIN_EVENT_MAP, lalu tambahkan entri makro untuk setiap peristiwa Anda, dan selesaikan peta peristiwa dengan makro END_EVENT_MAP.

Untuk informasi selengkapnya tentang peta peristiwa dan makro BEGIN_EVENT_MAP, lihat artikel Kontrol ActiveX: Peristiwa.

Persyaratan

Header afxctl.h

END_EVENT_MAP

Gunakan makro END_EVENT_MAP untuk mengakhiri definisi peta peristiwa Anda.

END_EVENT_MAP()

Persyaratan

Header afxctl.h

EVENT_CUSTOM

Menentukan entri peta peristiwa untuk peristiwa kustom.

EVENT_CUSTOM(pszName, pfnFire,  vtsParams)

Parameter

pszName
Nama peristiwa.

pfnFire
Nama fungsi pemecahan peristiwa.

vtsParams
Daftar yang dipisahkan spasi dari satu atau beberapa konstanta yang menentukan daftar parameter fungsi.

Keterangan

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

VTS_COLOR VTS_FONT

menentukan daftar yang berisi bilangan bulat 32-bit yang mewakili nilai warna RGB, diikuti dengan penunjuk ke IFontDisp antarmuka objek font OLE.

Konstanta VTS_ dan maknanya adalah sebagai berikut:

Simbol Jenis parameter
VTS_I2 short
VTS_I4 long
VTS_R4 float
VTS_R8 double
VTS_COLOR OLE_COLOR
VTS_CY MATA UANG
VTS_DATE TANGGAL
VTS_BSTR constChar*
VTS_DISPATCH LPDISPATCH
VTS_FONT IFontDispatch*
VTS_HANDLE MENANGANI
VTS_SCODE SCODE
VTS_BOOL BOOL
VTS_VARIANT const VARIANT*
VTS_PVARIANT VARIANT*
VTS_UNKNOWN LPUNKNOWN
VTS_OPTEXCLUSIVE OLE_OPTEXCLUSIVE
VTS_PICTURE IPictureDisp*
VTS_TRISTATE OLE_TRISTATE
VTS_XPOS_PIXELS OLE_XPOS_PIXELS
VTS_YPOS_PIXELS OLE_YPOS_PIXELS
VTS_XSIZE_PIXELS OLE_XSIZE_PIXELS
VTS_YSIZE_PIXELS OLE_YSIZE_PIXELS
TS_XPOS_HIMETRIC OLE_XPOS_HIMETRIC
VTS_YPOS_HIMETRIC OLE_YPOS_HIMETRIC
VTS_XSIZE_HIMETRIC OLE_XSIZE_HIMETRIC
VTS_YSIZE_HIMETRIC OLE_YSIZE_HIMETRIC

Catatan

Konstanta varian tambahan telah ditentukan untuk semua jenis varian, dengan pengecualian VTS_FONT dan VTS_PICTURE, yang menyediakan pointer ke konstanta data varian. Konstanta ini diberi nama menggunakan VTS_Pconstantname konvensi. Misalnya, VTS_PCOLOR adalah penunjuk ke konstanta VTS_COLOR.

Persyaratan

Header afxctl.h

EVENT_CUSTOM_ID

Menentukan fungsi penembakan peristiwa untuk peristiwa kustom milik ID pengiriman yang ditentukan oleh dispid.

EVENT_CUSTOM_ID(
    pszName,
    dispid,
    pfnFire,
    vtsParams)

Parameter

pszName
Nama peristiwa.

dispid
ID pengiriman yang digunakan oleh kontrol saat menembakkan peristiwa.

pfnFire
Nama fungsi pemecahan peristiwa.

vtsParams
Daftar variabel parameter yang diteruskan ke kontainer kontrol saat peristiwa diaktifkan.

Keterangan

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

VTS_COLOR VTS_FONT

menentukan daftar yang berisi bilangan bulat 32-bit yang mewakili nilai warna RGB, diikuti dengan penunjuk ke IFontDisp antarmuka objek font OLE.

Untuk daftar VTS_ konstanta, lihat EVENT_CUSTOM.

Persyaratan

Header afxctl.h

ON_OLEVERB

Makro ini menentukan entri peta pesan yang memetakan kata kerja kustom ke fungsi anggota tertentu dari kontrol Anda.

ON_OLEVERB(idsVerbName,  memberFxn)

Parameter

idsVerbName
ID sumber daya string dari nama kata kerja.

memberFxn
Fungsi yang dipanggil oleh kerangka kerja ketika kata kerja dipanggil.

Keterangan

Editor sumber daya dapat digunakan untuk membuat nama kata kerja kustom yang ditambahkan ke tabel string Anda.

Prototipe fungsi untuk memberFxn adalah:

BOOL memberFxn(
   LPMSG    lpMsg,
   HWND     hWndParent,
   LPCRECT  lpRect);

Nilai parameter lpMsg, hWndParent, dan lpRect diambil dari parameter yang sesuai dari IOleObject::DoVerb fungsi anggota.

Persyaratan

Header afxole.h

ON_STDOLEVERB

Gunakan makro ini untuk mengambil alih perilaku default kata kerja standar.

ON_STDOLEVERB(iVerb, memberFxn)

Parameter

iVerb
Indeks kata kerja standar untuk kata kerja yang ditimpa.

memberFxn
Fungsi yang dipanggil oleh kerangka kerja ketika kata kerja dipanggil.

Keterangan

Indeks kata kerja standar adalah bentuk OLEIVERB_, diikuti oleh tindakan. OLEIVERB_SHOW, OLEIVERB_HIDE, dan OLEIVERB_UIACTIVATE adalah beberapa contoh kata kerja standar.

Lihat ON_OLEVERB untuk deskripsi prototipe fungsi yang akan digunakan sebagai parameter memberFxn .

Persyaratan

Header afxole.h

Lihat juga

Makro dan Global