다음을 통해 공유


com_interface_entry(C++)

대상 클래스의 COM 맵에 인터페이스 항목을 추가합니다.

구문

[ com_interface_entry(
  com_interface_entry) ]

매개 변수

com_interface_entry
항목의 실제 텍스트를 포함하는 문자열입니다. 가능한 값 목록은 COM_INTERFACE_ENTRY 매크로를 참조 하세요.

설명

com_interface_entry C++ 특성은 문자 문자열의 요약하지 않는 내용을 대상 개체의 COM 인터페이스 맵에 삽입합니다. 특성이 대상 개체에 한 번 적용되면 항목이 기존 인터페이스 맵의 시작 부분에 삽입됩니다. 특성이 동일한 대상 개체에 반복적으로 적용되는 경우 항목은 수신 순서대로 인터페이스 맵의 시작 부분에 삽입됩니다.

이 특성을 사용하려면 coclass, progid또는 vi_progid 특성(또는 이 중 하나를 암시하는 다른 특성)을 동일한 요소에 적용해야 합니다. 단일 특성을 사용하는 경우 다른 두 특성도 자동으로 적용됩니다. 예를 들어 적용 vi_progid 되고 coclass 적용된 경우 progid 입니다.

첫 번째 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은 인터페이스 맵의 첫 번째 항목을 ID 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
반복 가능
필수 특성 다음 중 하나 이상: coclass, progid또는 vi_progid.
잘못된 특성 None

특성 컨텍스트에 대한 자세한 내용은 특성 컨텍스트를 참조하세요.

참고 항목

COM 특성
클래스 특성
Typedef, Enum, Union 및 Struct 특성