templatelt คลาสมีอยู่ >
คลา CComPolyObject: IUnknown สาธารณะ CComObjectRootEx สาธารณะ <มีอยู่:: _ThreadModel::ThreadModelNoCS >
พารามิเตอร์
มีอยู่
คลาส มา จากCComObjectRootหรือCComObjectRootExตลอดจน จากอินเทอร์เฟซอื่น ๆ ที่คุณต้องการสนับสนุนบนวัตถุ?
ใช้CComPolyObject IUnknownสำหรับวัตถุรวม หรือ nonaggregated?
เมื่อมีสร้างอินสแตนซ์ของCComPolyObjectค่าของไม่ทราบภายนอกมีการตรวจสอบ ถ้าเป็นNULL, IUnknownถูกนำมาใช้สำหรับวัตถุ nonaggregated ถ้าไม่ทราบภายนอกไม่ใช่NULL, IUnknownถูกนำมาใช้สำหรับวัตถุรวม?
ประโยชน์ของการใช้CComPolyObjectเป็นว่า คุณหลีกเลี่ยงทั้งCComAggObjectและCComObjectในโมดูลของคุณเพื่อจัดการกับกรณีที่รวม และ nonaggregated CComPolyObjectวัตถุเดียวจับทั้งสองกรณี ซึ่งหมายความว่า สำเนาเดียวเท่านั้น vtable และสำเนาหนึ่งของฟังก์ชันมีอยู่ในโมดูลของคุณ ถ้า vtable ของคุณมีขนาดใหญ่ นี้สามารถลดขนาดของโมดูลอย่างเต็มที่ อย่างไรก็ตาม ถ้า vtable ของคุณมีขนาดเล็ก การใช้CComPolyObjectสามารถทำในโมดูขนาดใหญ่ขึ้นเล็กน้อยเนื่องจากไม่เหมาะสำหรับวัตถุรวม หรือ nonaggregated เป็นCComAggObjectและCComObject?
ถ้าแมโคDECLARE_POLY_AGGREGATABLEระบุไว้ในข้อกำหนดของวัตถุของคลาสCComPolyObjectจะถูกใช้ในการสร้างวัตถุของคุณ DECLARE_POLY_AGGREGATABLEจะถูกประกาศถ้า คุณใช้ตัวช่วยสร้างวัตถุ ATL เพื่อสร้างตัวควบคุมแบบเต็มหรือควบคุม Internet Explorer?
ถ้ารวม วัตถุCComPolyObjectได้เองIUnknownแยกต่างหากจากของวัตถุภายนอกIUnknownและรักษาตนเองจำนวนการอ้างอิง CComPolyObjectใช้CComContainedObjectเพื่อมอบหมายไปยังไม่ทราบภายนอก?
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสไม่ ดูบทความพื้นฐานของ ATL วัตถุ COM?
#รวม lt;atlcom.h>
ดูเพิ่มเติมnbspCComObjectRootEx, DECLARE_POLY_AGGREGATABLE(&N)