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 |
특성 컨텍스트에 대한 자세한 내용은 특성 컨텍스트를 참조하세요.