Aracılığıyla paylaş


COM_INTERFACE_ENTRY (C++)

Hedef sınıfının com haritası içine bir arabirim girdisi ekler.

[ com_interface_entry( 
   com_interface_entry
 ) ]

Parametreler

Notlar

com_interface_entry C++ öznitelik, hedef nesne com arabirimi eşlemenin içine bir karakter dizesi unabridged içeriğini ekler.Öznitelik bir kez hedef nesneye uygulanır, varolan bir arabirim haritayı başına içine giriş eklenir.Öznitelik sürekli olarak aynı hedef nesneye uygulanır, alındıkları sırada arabirimi harita başında girişleri eklenir.

Bu öznitelik gerektiren coclass, ProgID, veya vi_progid özniteliği (veya bunlardan anlaşılacağı başka bir öznitelik) de uygulanacağını aynı öğe.Tek bir öznitelik kullanýlmýþsa, diğer ikisi otomatik olarak uygulanır.Örneğin, ProgID uygulanan vi_progid ve coclass de uygulanır.

Çünkü ilk kullanımı com_interface_entry arabirimi harita başında eklenecek yeni arabirimi neden COM_INTERFACE_ENTRY aşağıdakilerden biri olmalıdır:

  • COM_INTERFACE_ENTRY

  • COM_INTERFACE_ENTRY_IID

  • COM_INTERFACE_ENTRY2

  • COM_INTERFACE_ENTRY2_IID

Ek kullanımları, com_interface_entry özniteliği tüm desteklenen COM_INTERFACE_ENTRY türlerini kullanabilirsiniz.

atl ilk giriş arabirimi eşlemesinde kimliği olarak kullandığı için bu kısıtlama gereklidir IUnknown; Bu nedenle, giriş geçerli bir arabirim olmalıdır.Örneğin, aşağıdaki kod örneği gerçek bir com arabirimi arabirimi eşleme dosyasındaki ilk girdi içermediği için geçersiz.

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

Örnek

Aşağıdaki kod varolan com arabirimi eşlemeye iki girdisi ekler CMyBaseClass.İlk standart bir arabirim ve ikinci gizler IDebugTest arabirimi.

// 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
{
};

Sonuçta elde edilen com nesnesi eşleme için CMyBaseClass aşağıdaki gibidir:

    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()

Gereksinimler

Öznitelik içerik

Uygulama alanı

sınıf,struct

Yinelenebilir

Evet

Gerekli öznitelikleri

Aşağıdakilerden en az biri: coclass, ProgID, veya vi_progid.

Geçersiz öznitelik

None

Öznitelik içerikleri hakkında daha fazla bilgi için bkz: Öznitelik içerikleri.

Ayrıca bkz.

Diğer Kaynaklar

com öznitelikleri

Sınıf öznitelikleri

TypeDef, Enum, Birliği ve yapı öznitelikleri

Attributes Samples