Peristiwa Kontrol (COM)

Selain menyediakan properti dan metode, kontrol juga menyediakan antarmuka keluar untuk memberi tahu klien peristiwanya. Klien harus mendukung penanganan peristiwa ini. Lihat Peristiwa di COM dan Objek yang dapat Koneksi untuk informasi selengkapnya tentang cara kerja objek yang dapat dihubungkan.

Kontrol dapat mendukung antarmuka keluar yang berbeda untuk tujuan yang berbeda. Semua antarmuka keluar ditandai sebagai antarmuka sumber dalam informasi jenis kontrol, tetapi hanya satu yang ditandai default untuk menunjukkan bahwa itu adalah antarmuka keluar utama.

Kontainer dapat mendukung satu atau beberapa antarmuka keluar yang ditentukan oleh kontrol. Kontrol harus disiapkan untuk menangani kontainer yang hanya memberikan dukungan untuk beberapa antarmuka keluar mereka.

Kontrol mendukung empat jenis peristiwa:

  • Meminta peristiwa. Kontrol meminta izin dari kliennya untuk melakukan sesuatu dengan memanggil metode di antarmuka keluar, sehingga memicu peristiwa permintaan. Klien memberi sinyal kontrol melalui boolean, out-parameter dalam metode yang dipanggil kontrol. Klien dengan demikian dapat mencegah kontrol melakukan tindakan.
  • Sebelum peristiwa. Kontrol memberi tahu topi kliennya, itu akan melakukan sesuatu dengan memanggil metode di antarmuka keluar, sehingga memicu peristiwa sebelumnya. Klien tidak memiliki kesempatan untuk mencegah tindakan, tetapi dapat mengambil langkah-langkah yang diperlukan mengingat tindakan yang akan terjadi.
  • Setelah peristiwa. Kontrol memberi tahu kliennya bahwa ia baru saja melakukan sesuatu dengan memanggil metode di antarmuka keluar, sehingga memicu setelah peristiwa. Sekali lagi, klien tidak dapat membatalkan tindakan ini, tetapi dapat mengambil langkah-langkah yang diperlukan mengingat tindakan yang telah terjadi.
  • Lakukan peristiwa. Kontrol memicu peristiwa yang dilakukan untuk memungkinkan kliennya mengambil alih tindakan kontrol dan memberikan beberapa tindakan alternatif atau tambahan. Biasanya, metode yang dipanggil kontrol untuk peristiwa do memiliki sejumlah parameter untuk bernegosiasi dengan klien tentang tindakan yang akan terjadi.

Dispid berikut didefinisikan untuk peristiwa standar yang dapat didukung kontrol: Klik, DblClick, KeyDown, KeyPress, KeyUp, MouseMove, MouseUp, dan Kesalahan. Semua peristiwa standar ini memiliki nilai DISPID negatif, menunjukkan status standarnya.

Metode IOleControl::FreezeEvents , ketika dipanggil dengan TRUE, memberi tahu kontrol apakah kontainer akan mengganggu penanganan peristiwa dari kontrol sampai FreezeEvents kembali dipanggil dengan FALSE. Selama kontrol waktu ini tidak dapat bergantung pada kontainer yang benar-benar menangani peristiwa apa pun. Jika suatu peristiwa harus ditangani, kontrol harus mengantre peristiwa untuk menembakkannya ketika FreezeEvents dipanggil dengan FALSE.

Kontrol ActiveX