ATL ใช้ windows ที่มีอยู่กับCContainedWindow หน้าต่างมีอยู่แสดงหน้าต่างที่ delegates ของข้อความไปยังคอนเทนเนอร์วัตถุแทนการจัดการเหล่านี้ในชั้นของตนเอง?
หมายเหตุnbsp คุณไม่จำเป็นต้องสืบทอดมาชั้นจากCContainedWindowเพื่อที่จะใช้ windows ที่มีอยู่(&N)?
กับ windows ที่มีอยู่ คุณสามารถซุปเปอร์คลาสใดมีคลาส Windows ที่มีอยู่หรือระดับชั้นย่อยที่มีหน้าต่างที่มีอยู่ สร้างหน้าต่าง superclasses ว่า Windows ที่มีอยู่มีคลาส ก่อน ระบุชื่อคลาสที่มีอยู่ในการกำหนดสำหรับวัตถุCContainedWindow จึง เรียกCContainedWindow::Create ไปยังระดับชั้นย่อยที่มีหน้าต่างที่มีอยู่ คุณไม่จำเป็นต้องระบุชื่อคลาส Windows (ด่านNULLเพื่อที่กำหนด เพียงแค่เรียกเมธอดCContainedWindow::SubclassWindowกับหมายเลขอ้างอิงไปยังหน้าต่างที่ถูก subclassed?
โดยปกติแล้วคุณมักจะใช้ windows ที่มีอยู่เป็นข้อมูลสมาชิกของคลาสคอนเทนเนอร์ คอนเทนเนอร์ที่ไม่จำเป็นต้องเป็น หน้าต่าง อย่างไรก็ตาม จะต้องสืบทอดมาจากCMessageMap?
หน้าต่างมีอยู่สามารถใช้ข้อความทดแทนแผนที่การจัดการกับข้อความ ถ้าคุณมีมากกว่าหนึ่งหน้าต่างที่มีอยู่ คุณควรประกาศหลายสลับข้อความแผนที่ แต่ละที่สอดคล้องกับหน้าต่างแยกต่างหากที่มีอยู่?
ต่อไปนี้เป็นตัวอย่างของคลาคอนเทนเนอร์กับ windows ที่มีอยู่สอง:
คลา CMyContainer: CMessageMap สาธารณะ, ...
{
สาธารณะ:
nbsp CContainedWindow m_wndEdit
CContainedWindow m_wndList
CMyContainer(): m_wndEdit ("Edit" นี้ 1), m_wndList ("List" นี้ 2
{
}
...
BEGIN_MSG_MAP(CMyContainer)
ALT_MSG_MAP(&1)
/ / ตัวจัดการสำหรับหน้าต่างแก้ไขไปที่นี่
ALT_MSG_MAP(2)
/ / ตัวจัดการสำหรับหน้าต่างรายการไปที่นี่
END_MSG_MAP()
}
ดูข้อมูลเพิ่มเติมเกี่ยวกับ windows ที่มีอยู่ การ SUBEDITอย่าง ดูข้อมูลเพิ่มเติมเกี่ยวกับ superclassing และ subclassing, หน้าต่างกระบวนงาน Superclassingและ Subclassing กระบวนงานของหน้าต่างในWin32 SDK?