แมโค COM_INTERFACE_ENTRY

แมโครเหล่านี้ป้อนอินเทอร์เฟซของวัตถุลงในแผนที่ของ COM เพื่อให้สามารถเข้าโดยQueryInterface ลำดับของรายการในแผนที่ COM เป็นอินเทอร์เฟซใบสั่งจะมีการตรวจสอบสำหรับการจับคู่IIDระหว่างQueryInterface?

แต่ละวัตถุที่ต้องการเปิดเผยของอินเทอร์เฟซผ่านQueryInterfaceต้องมีแผนที่ COM ของตนเอง แผนที่ COM เริ่มทำงานกับแมโคBEGIN_COM_MAP อินเทอร์เฟซรายการจะถูกเพิ่มเข้ากับอย่างน้อยหนึ่งอย่างแมโคCOM_INTERFACE_ENTRYและแผนที่เสร็จสมบูรณ์ ด้วยแมโคEND_COM_MAP ตัวอย่างเช่น:

BEGIN_COM_MAP(CMyObject)
 nbsp  COM_INTERFACE_ENTRY(IDispatch)
    COM_INTERFACE_ENTRY(IMyObject)
END_COM_MAP ()(&N)

ดู ATL COMMAPตัวอย่างสำหรับตัวอย่างที่ใช้ COM ชนิดต่าง ๆ แมปรายการแมโคร?

หมายเหตุรายการแรกในแผนที่ COM ต้องเป็นอินเทอร์เฟซบนวัตถุประกอบด้วยการแมป COM ดังนั้น คุณไม่สามารถเริ่มรายการของแผนที่ COM กับCOM_INTERFACE_ENTRY_CHAINซึ่งทำให้แผนที่ COM ของวัตถุแตกต่างกันเพื่อต้องการค้นหาจุด ที่COM_INTERFACE_ENTRY_CHAIN (COtherObject)ปรากฏในแผนที่ COM ของวัตถุได้ ถ้าคุณต้องการค้นหาแผนที่ COM ของวัตถุอีกครั้งแรก เพิ่มรายการอินเทอร์เฟซสำหรับIUnknownแผนที่ของคุณ COM โยงแผนที่ COM ของวัตถุอื่น ๆ ตัวอย่างเช่น:

BEGIN_COM_MAP(CThisObject)
 nbsp COM_INTERFACE_ENTRY(IUnknown)
   COM_INTERFACE_ENTRY_CHAIN(COtherObject)
END_COM_MAP ()(&N)

ข้อควรระวังnbsp เป็นของรุ่นที่ 3.0, ATL ใช้คำสำคัญคอมไพเลอร์__uuidof ( คลา )เพื่อขอรับ IID สอดคล้องกันสำหรับคลาสที่กำหนด เนื่องจากการเปลี่ยนแปลงในแมโคCOM_INTERFACE_ENTRYมีประสิทธิภาพในเวอร์ชัน 3.0 ตอนนี้คุณเพียงแค่ใส่หัวข้อสำหรับอินเทอร์เฟซการใช้ แทนยัง เชื่อมโยงไปยังไลบรารีที่กำหนด iid ของตรงกันสำหรับอินเทอร์เฟซที่ การเปลี่ยนแปลงนี้สามารถทำให้เกิดปัญหา หากหัวข้อก่อนหน้านี้ได้ถูกสร้าง โดย MIDL รุ่นเก่า หรือจะถูกเข้า รหัสมือ และไม่ทำเครื่องหมายอย่างเหมาะสม ถ้ามีการทำเครื่องหมายการประกาศสำหรับอินเทอร์เฟซในหัวข้อที่ไม่ มีที่เกี่ยวข้อง__declspec (จากuuid )นั้นใดพยายามที่ใช้คำสำคัญ__uuidofสำหรับอินเทอร์เฟซที่จะล้ม คุณสามารถเปลี่ยนกลับไปแมโคCOM_INTERFACE_ENTRY (ATL 2.x) เก่า ด้วยการกำหนด_ATL_NO_UUIDOFในการตั้งค่าของคุณสร้างเมื่อต้องการแก้ปัญหาลักษณะการทำงานใหม่(&N)?

ต่อไปนี้เป็นรายการที่พร้อมใช้งานแมโครใน:

COM ผังรายการแมโคร

COM_INTERFACE_ENTRY
COM_INTERFACE_ENTRY_IID
COM_INTERFACE_ENTRY2
COM_INTERFACE_ENTRY2_IID
COM_INTERFACE_ENTRY_FUNC
COM_INTERFACE_ENTRY_FUNC_BLIND
COM_INTERFACE_ENTRY_TEAR_OFF
COM_INTERFACE_ENTRY_CACHED_TEAR_OFF
COM_INTERFACE_ENTRY_AGGREGATE
COM_INTERFACE_ENTRY_AGGREGATE_BLIND
COM_INTERFACE_ENTRY_AUTOAGGREGATE
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND
COM_INTERFACE_ENTRY_CHAIN
COM_INTERFACE_ENTRY_BREAK
COM_INTERFACE_ENTRY_NOINTERFACE

ATL แมโครและฟังก์ชันที่ส่วนกลาง

Index