CWindowImpl

แม่แบบ lt คลาสTคลาสTBase= CWindow คลาสTWinTraits= CControlWinTraits >
คลา ATL_NO_VTABLE CWindowImpl: CWindowImplBaseT สาธารณะ <
TBase, TWinTraits

พารามิเตอร์

T

คลาส มาจากCWindowImpl?

TBase

คลาสพื้นฐานของคลาสใหม่ของคุณ คลาสพื้นฐานเป็นค่าเริ่มต้นคือCWindow?

TWinTrait

คลาสคุณลักษณะที่กำหนดลักษณะสำหรับหน้าต่างของคุณ ค่าเริ่มต้นคือCControlWinTraits?

CWindowImplช่วยให้คุณสามารถสร้างหน้าต่างใหม่หรือระดับชั้นย่อยมีหน้าต่างที่มีอยู่ CWindowImplของหน้าต่างวิธีใช้การแมปข้อความเพื่อส่งข้อความไปยังตัวจัดการที่เหมาะสม?

CWindowImpl::Createสร้างหน้าต่างใหม่โดยใช้หน้าต่างชั้นข้อมูลที่จัดการโดยCWndClassInfo CWindowImplมีรDECLARE_WND_CLASSซึ่งหมายความว่าCWndClassInfoจะลงทะเบียนคลาสในหน้าต่างใหม่ ถ้าคุณต้องการซุปเปอร์คลาสที่มีอยู่ หน้าต่างชั้น ชั้นของคุณที่ได้สืบทอดมาจากCWindowImplและรวมแมโคDECLARE_WND_SUPERCLASS ในกรณีนี้CWndClassInfoจะลงทะเบียนคลาสหน้าต่างที่จะยึดเป็นคลาสที่มีอยู่ แต่ใช้CWindowImpl::WindowProc ตัวอย่างเช่น

คลา CMyWindow: CComControlltCMyWindow >, ...
                / / CComControl มาจาก CWindowImpl
{
สาธารณะ:
   // 1. พารามิเตอร์ NULL หมายความว่า ATL จะสร้างตัว
   / / ชื่อสำหรับที่ซุปเปอร์คลาส
   // 2. พารามิเตอร์ "แก้ไข" หมายความว่า เป็นซุปเปอร์คลาสที่
   / / ยึดกล่องแก้ไข Windows มาตรฐาน
   DECLARE_WND_SUPERCLASS (NULL "แก้ไข")
   ...
};

หมายเหตุnbsp  เนื่องจากCWndClassInfoจัดการข้อมูลสำหรับคลาสหน้าต่างเดียว แต่ละหน้าต่างสร้างผ่านทางอินสแตนซ์ของCWindowImplจะยึดคลาสหน้าต่างกัน(&N)?

นอกจากนี้CWindowImplยังสนับสนุน subclassing หน้าต่าง เมธอดSubclassWindowแนบมีหน้าต่างที่มีอยู่ไปยังวัตถุCWindowImplและการเปลี่ยนแปลงวิธีการหน้าต่างCWindowImpl::WindowProc แต่ละอินสแตนซ์ของCWindowImplสามารถซับคลาสหน้าต่างแตกต่างกัน?

หมายเหตุnbsp  สำหรับวัตถุใด ๆCWindowImplกำหนด เรียกตัวสร้างหรือSubclassWindow นอกจากนี้คุณไม่ควรเรียกใช้ทั้งสองวิธีบนวัตถุเดียวกัน(&N)?

นอกจากการCWindowImpl, ATL แสดงCContainedWindowสร้างหน้าต่างอยู่ภายในวัตถุอื่น?

Destructor คลาสพื้นฐานที่ (~CWindowImplRoot) เพื่อให้แน่ใจว่า หน้าต่างหายก่อนวัตถุถูกทำลายไป?

CWindowImplมาจากCWindowImplBaseTซึ่งได้มาจากCWindowImplRootซึ่งจะเห็นได้จากTBaseและCMessageMap?

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับ ดู
การสร้างตัวควบคุม ATL Tutorial
การใช้ windows ใน ATL คลาสหน้าต่าง ATL
ATL วัตถุตัวช่วยสร้าง การสร้างโครงการ ATL
Windows Windowsและหัวข้อที่ตามมาในPlatform SDK
Subclassing หน้าต่างกระบวนงาน SubclassingในPlatform SDK
Superclassing หน้าต่างกระบวนงาน SuperclassingในPlatform SDK

#รวม lt;atlwin.h>

สมาชิกของคลาส

ดูเพิ่มเติม

BEGIN_MSG_MAP, CComControl

Index