Ringkasan Penanganan Peristiwa ATL
Secara umum, menangani peristiwa COM adalah proses yang relatif sederhana. Ada tiga langkah utama:
Terapkan antarmuka peristiwa pada objek Anda.
Beri tahu sumber peristiwa bahwa objek Anda ingin menerima peristiwa.
Buka sumber peristiwa saat objek Anda tidak perlu lagi menerima peristiwa.
Menerapkan Antarmuka
Ada empat cara utama untuk menerapkan antarmuka menggunakan ATL.
Berasal dari | Cocok untuk Jenis antarmuka | Mengharuskan Anda menerapkan semua metode* | Memerlukan pustaka jenis pada waktu proses |
---|---|---|---|
Antarmuka | Dapat Vtable | Ya | Tidak |
IDispatchImpl | Ganda | Ya | Ya |
IDispEventImpl | Dispinterface | Tidak | Ya |
IDispEventSimpleImpl | Dispinterface | Tidak | Tidak |
* Saat menggunakan kelas dukungan ATL, Anda tidak pernah diharuskan untuk menerapkan IUnknown
metode atau IDispatch
secara manual.
Memberi Saran dan Tidak Mengawasi Sumber Peristiwa
Ada tiga cara utama untuk menasihati dan membatalkan penambahan sumber peristiwa menggunakan ATL.
Sarankan fungsi | Fungsi tidak diawasi | Paling cocok untuk digunakan dengan | Mengharuskan Anda melacak cookie | Komentar |
---|---|---|---|---|
AtlAdvise, CComPtrBase::Advise | AtlUnadvise | Antarmuka Vtable atau ganda | Ya | AtlAdvise adalah fungsi ATL global. CComPtrBase::Advise digunakan oleh CComPtr dan CComQIPtr. |
IDispEventSimpleImpl::D ispEventAdvise | IDispEventSimpleImpl::D ispEventUnadvise | IDispEventImpl atau IDispEventSimpleImpl | No | Lebih sedikit parameter daripada AtlAdvise karena kelas dasar melakukan lebih banyak pekerjaan. |
CComCompositeControl::AdviseSinkMap(TRUE) | CComCompositeControl::AdviseSinkMap(FALSE) | Kontrol ActiveX dalam kontrol Komposit | No | CComCompositeControl::AdviseSinkMap menyarankan semua entri dalam peta sink peristiwa. Fungsi yang sama membuka entri. Metode ini dipanggil secara otomatis oleh CComCompositeControl kelas . |
CAxDialogImpl::AdviseSinkMap(TRUE) | CAxDialogImpl::AdviseSinkMap(FALSE) | Kontrol ActiveX dalam kotak dialog | No | CAxDialogImpl::AdviseSinkMap menyarankan dan membatalkan pengawasan semua kontrol ActiveX dalam sumber daya dialog. Ini dilakukan secara otomatis untuk Anda. |