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 COleControl
kelas -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 | const Char* |
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