++:การสร้างพอร์ตจาก ATL 2.1

IObjectSafetyImpl

ใน ATL 2.1 คลาสIObjectSafetyImplทำเครื่องหมายตัวควบคุมเป็นการปลอดภัยสำหรับสร้างสคริปต์ เหตุผลด้านความปลอดภัย เริ่มต้นนี้ถูกเอาออก ดังนั้นคุณต้องระบุได้อย่างชัดเจนตัวเลือกความปลอดภัยของคุณโดยใช้พารามิเตอร์การแม่แบบที่สอง ขณะนี้คุณต้องเปิดเผยการคลาสนี้ใช้COM_INTERFACE_ENTRYแทนCOM_INTERFACE_ENTRY_IMPL?

_ATL_NO_UUIDOF

ATL 3.0 ใช้คำสำคัญคอมไพเลอร์__uuidof ( คลา )เพื่อขอรับ IID สอดคล้องกันสำหรับคลาสที่กำหนด เนื่องจากการเปลี่ยนแปลงในการแมโคร COM_INTERFACE_ENTRYตอนนี้คุณเพียงแค่ใส่หัวข้อสำหรับอินเทอร์เฟซการใช้ แทนยัง เชื่อมโยงไปยังไลบรารีที่กำหนด iid ของตรงกันสำหรับอินเทอร์เฟซที่ การเปลี่ยนแปลงนี้สามารถทำให้เกิดปัญหา หากหัวข้อก่อนหน้านี้ได้ถูกสร้าง โดย MIDL รุ่นเก่า หรือจะถูกเข้า รหัสมือ และไม่ทำเครื่องหมายอย่างเหมาะสม?

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

_ATL_DEBUG_INTERFACES ใหม่

นอกจากการ_ATL_DEBUG_QIและ_ATL_DEBUG_REFCOUNTใน ATL 2.x มีใหม่_ATL_DEBUG_INTERFACESซึ่งจะติดตามไปยังคอนโซลการตรวจแก้จุดบกพร่องใด ๆ รั่วไหลของอินเทอร์เฟซที่ถูก ตรวจพบเมื่อ _Module.Term ถูกเรียก (เมื่อเซิร์ฟเวอร์ปิด)?

ดูเพิ่มเติม

เคล็ดลับในการตรวจแก้จุดบกพร่องสำหรับวัตถุ ATL

แมโคที่ล้าสมัย

แมโคร ความคิดเห็น
COM_INTERFACE_ENTRY_IMPL Obsolete แทนที่ด้วยCOM_INTERFACE_ENTRY?
COM_INTERFACE_ENTRY_IMPL_IID Obsolete แทนที่ด้วยCOM_INTERFACE_ENTRY_IID?
CHAIN_MSG_MAP_ALT_DYNAMIC ล้าสมัย และการลบ?
BEGIN_PROPERTY_MAP Obsolete ใช้ใหม่คุณสมบัติแผนที่แมBEGIN_PROP_MAPตามที่อธิบายไว้ในแมโครใหม่?
END_PROPERTY_MAP Obsolete ใช้ใหม่คุณสมบัติแผนที่แมEND_PROP_MAPตามที่อธิบายไว้ในแมโครใหม่?

Index