คลาส CMessageMap
CMessageMapเป็นฐานคลาที่ช่วยให้ข้อความของวัตถุแผนที่ไปสามารถเข้าถึงวัตถุอื่น เพื่อให้วัตถุเปิดเผยแผนที่ของข้อ คลาสนี้ต้องสืบทอดมาจากCMessageMap?
ATL ใช้CMessageMapเพื่อสนับสนุนที่มีอยู่ windows และการกำหนดสายงานแผนผังข้อความแบบไดนามิก ตัวอย่างเช่น คลาสใด ๆ ที่ประกอบด้วยวัตถุCContainedWindowต้องสืบทอดมาจากCMessageMap รหัสต่อไปนี้จะนำมาจาก SUBEDITอย่าง ผ่านCComControl, CAtlEdit คลาสโดยอัตโนมัติมาจากCMessageMap?
คลา CAtlEdit: สาธารณะ CComControlltCAtlEdit >, ...
/ / CComControl มาจาก CWindowImpl
/ / ซึ่งได้มาจาก CMessageMap
{
สาธารณะ:
/ / ประกาศสมาชิกข้อมูลหน้าต่างที่มีอยู่
CContainedWindow m_EditCtrl
/ / เตรียมใช้งานหน้าต่างที่มีอยู่:
// 1. ผ่าน "แก้ไข" เพื่อระบุที่มีที่อยู่ / / หน้าต่างควรยึดมาตรฐาน / / Windows แก้ไขกล่อง
// 2. ชี้ 'นี้' เพื่อระบุการส่งผ่านที่ CAtlEdit / / ประกอบด้วยแผนที่จะใช้สำหรับข้อความ / / การประมวลผลข้อความของหน้าต่างที่มีอยู่
// 3. ส่งตัวระบุของแมปข้อความ ใน
/ / กรณีนี้ '1' ระบุการแมปข้อความ
/ / ประกาศพร้อม ALT_MSG_MAP(1)
CAtlEdit(): m_EditCtrl(_T("EDIT") นี้ 1)
{
m_bWindowOnly = TRUE
}
/ / ประกาศการแมปข้อความเริ่มต้น
BEGIN_MSG_MAP(CAtlEdit)
MESSAGE_HANDLER (WM_PAINT, OnPaint)
...
/ / ประกาศการแมปข้อความอื่น
/ / ระบุไว้ โดย '1'
ALT_MSG_MAP(1)
MESSAGE_HANDLER (WM_CHAR, OnChar)
END_MSG_MAP()
...
};
เนื่องจากหน้าต่างการมีอยู่ m_EditCtrl จะใช้แผนผังความในชั้นเรียนประกอบด้วย CAtlEdit มาจากCMessageMap?
ดูข้อมูลเพิ่มเติมเกี่ยวกับการแมปข้อความข้อความแผนที่ในบทความ "ATL หน้าต่างชั้น
#รวม lt;atlwin.h>
ดูเพิ่มเติมnbspCDynamicChain, BEGIN_MSG_MAP, ALT_MSG_MAP(&N)