CComPolyObject

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)

Index