Bagikan melalui


Peta Pesan (ATL)

Peta pesan mengaitkan fungsi handler dengan pesan, perintah, atau pemberitahuan tertentu. Dengan menggunakan makro peta pesan ATL, Anda dapat menentukan peta pesan untuk jendela. Prosedur jendela di CWindowImpl, CDialogImpl, dan CContainedWindowT mengarahkan pesan jendela ke peta pesannya.

Fungsi handler pesan menerima argumen tambahan jenis BOOL&. Argumen ini menunjukkan apakah pesan telah diproses, dan diatur ke TRUE secara default. Fungsi handler kemudian dapat mengatur argumen ke FALSE untuk menunjukkan bahwa ia belum menangani pesan. Dalam hal ini, ATL akan terus mencari fungsi handler lebih lanjut di peta pesan. Dengan mengatur argumen ini ke FALSE, Anda dapat terlebih dahulu melakukan beberapa tindakan sebagai respons terhadap pesan lalu mengizinkan pemrosesan default atau fungsi handler lain untuk menyelesaikan penanganan pesan.

Peta Pesan Berantai

ATL juga memungkinkan Anda untuk menautkan peta pesan, yang mengarahkan penanganan pesan ke peta pesan yang ditentukan di kelas lain. Misalnya, Anda dapat menerapkan penanganan pesan umum di kelas terpisah untuk memberikan perilaku seragam untuk semua rantai windows ke kelas tersebut. Anda dapat menautkan ke kelas dasar atau ke anggota data kelas Anda.

ATL juga mendukung penautan dinamis, yang memungkinkan Anda untuk menautkan ke peta pesan objek lain pada waktu proses. Untuk menerapkan penautan dinamis, Anda harus memperoleh kelas Anda dari CDynamicChain. Kemudian deklarasikan makro CHAIN_MSG_MAP_DYNAMIC di peta pesan Anda. CHAIN_MSG_MAP_DYNAMIC memerlukan nomor unik yang mengidentifikasi objek dan peta pesan yang Anda rantai. Anda harus menentukan nilai unik ini melalui panggilan ke CDynamicChain::SetChainEntry.

Anda dapat menautkan ke kelas apa pun yang mendeklarasikan peta pesan, asalkan kelas berasal dari CMessageMap. CMessageMap memungkinkan objek untuk mengekspos peta pesannya ke objek lain. Perhatikan bahwa CWindowImpl sudah berasal dari CMessageMap.

Peta Pesan Alternatif

Terakhir, ATL mendukung peta pesan alternatif, dideklarasikan dengan makro ALT_MSG_MAP . Setiap peta pesan alternatif diidentifikasi oleh angka unik, yang Anda teruskan ke ALT_MSG_MAP. Dengan menggunakan peta pesan alternatif, Anda dapat menangani pesan dari beberapa jendela dalam satu peta. Perhatikan bahwa secara default, CWindowImpl tidak menggunakan peta pesan alternatif. Untuk menambahkan dukungan ini, ambil alih WindowProc metode di kelas turunan Anda CWindowImpldan panggil ProcessWindowMessage dengan pengidentifikasi peta pesan.

Lihat juga

Menerapkan Jendela