分享方式:


com_interface_entry (C++)

將介面專案加入目標類別的 COM 對應中。

語法

[ com_interface_entry(
  com_interface_entry) ]

參數

com_interface_entry
包含專案實際文字的字串。 如需可能值的清單,請參閱 COM_INTERFACE_ENTRY宏

備註

com_interface_entry C++ 屬性會將字元字串的 unabridged 內容插入目標物件的 COM 介面對應中。 如果屬性一次套用至目標物件,專案就會插入現有介面對應的開頭。 如果屬性重複套用至相同的目標物件,專案會以接收的順序插入介面對應開頭。

此屬性需要 coclassprogidvi_progid 屬性 (或表示上述其中一項的另一個屬性) 也套用至相同的項目。 如果使用任何單一屬性,則會自動套用其他兩項。 例如,如果 progid 已套用 , vi_progid 也會 coclass 套用 。

因為第一次使用 com_interface_entry 會導致新介面插入介面對應開頭,所以它必須是下列其中一個COM_INTERFACE_ENTRY類型:

  • COM_INTERFACE_ENTRY

  • COM_INTERFACE_ENTRY_IID

  • COM_INTERFACE_ENTRY2

  • COM_INTERFACE_ENTRY2_IID

com_interface_entry 屬性的其他用法 可以使用所有支援的COM_INTERFACE_ENTRY類型。

這項限制是必要的,因為 ATL 會使用介面對應中的第一個專案做為身分 IUnknown 識別;因此,專案必須是有效的介面。 例如,下列程式碼範例無效,因為介面對應中的第一個專案未指定實際的 COM 介面。

[ coclass, com_interface_entry =
    "COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)"
]
   class CMyClass
   {
   };

範例

下列程式碼會將兩個專案新增至 的現有 COM 介面對應 CMyBaseClass 。 第一個是標準介面,第二個會 IDebugTest 隱藏介面。

// cpp_attr_ref_com_interface_entry.cpp
// compile with: /LD
#define _ATL_ATTRIBUTES
#include "atlbase.h"
#include "atlcom.h"

[module (name ="ldld")];

[ object,
  uuid("7dbebed3-d636-4917-af62-c767a720a5b9")]
__interface IDebugTest{};

[ object,
  uuid("2875ceac-f94b-4087-8e13-d13dc167fcfc")]
__interface IMyClass{};

[ coclass,
  com_interface_entry ("COM_INTERFACE_ENTRY (IMyClass)"),
  com_interface_entry ("COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)"),
  uuid("b85f8626-e76e-4775-b6a0-4826a9e94af2")
]

class CMyClass: public IMyClass, public IDebugTest
{
};

產生的 COM 物件對應 CMyBaseClass 如下所示:

BEGIN_COM_MAP(CMyClass)
    COM_INTERFACE_ENTRY (IMyClass)
    COM_INTERFACE_ENTRY_NOINTERFACE(IDebugTest)
    COM_INTERFACE_ENTRY(IMyClass)
    COM_INTERFACE_ENTRY2(IDispatch, IMyClass)
    COM_INTERFACE_ENTRY(IDebugTest)
    COM_INTERFACE_ENTRY(IProvideClassInfo)
END_COM_MAP()

需求

屬性內容
適用於 class, struct
可重複 Yes
必要屬性 下列一或多個專案: coclassprogidvi_progid
無效屬性

如需有關屬性內容的詳細資訊,請參閱 屬性內容

另請參閱

COM 屬性
類別屬性
Typedef、Enum、Union 和 Struct 屬性