CreateStdDispatch 함수(oleauto.h)
단일 함수 호출을 통해 IDispatch 인터페이스의 표준 구현을 만듭니다. 이렇게 하면 Automation을 통해 개체를 쉽게 노출할 수 있습니다.
구문
HRESULT CreateStdDispatch(
IUnknown *punkOuter,
void *pvThis,
ITypeInfo *ptinfo,
IUnknown **ppunkStdDisp
);
매개 변수
punkOuter
개체의 IUnknown 구현입니다.
pvThis
노출할 개체입니다.
ptinfo
노출된 개체를 설명하는 형식 정보입니다.
ppunkStdDisp
IDispatch 인터페이스 QueryInterface 호출을 구현하는 개체에 대해 알 수 없는 프라이빗입니다. 함수가 실패하면 이 포인터는 null입니다.
반환 값
이 함수는 이러한 값 중 하나를 반환할 수 있습니다.
반환 코드 | 설명 |
---|---|
|
성공. |
|
처음 세 인수 중 하나가 잘못되었습니다. |
|
작업을 완료할 메모리가 부족했습니다. |
설명
개체에 대한 IDispatch 멤버 함수를 구현하는 대신 개체를 만들 때 CreateStdDispatch를 사용할 수 있습니다. 그러나 CreateStdDispatch 가 만드는 구현에는 다음과 같은 제한 사항이 있습니다.
- 하나의 국가 언어만 지원합니다.
- Invoke에서 반환된 디스패치 정의 예외 코드만 지원합니다.
LoadTypeLib, GetTypeInfoOfGuid 및 CreateStdDispatch 는 형식 라이브러리를 사용하여 개체를 노출하기 위해 호출해야 하는 최소 함수 집합으로 구성됩니다. LoadTypeLib 및 GetTypeInfoOfGuid에 대한 자세한 내용은 형식 설명 인터페이스를 참조하세요.
CreateDispTypeInfo 및 CreateStdDispatch 는 INTERFACEDATA 구조에서 제공하는 형식 정보를 사용하여 개체를 노출하기 위해 호출해야 하는 최소 디스패치 구성 요소 집합으로 구성됩니다.
예제
다음 코드는 CreateStdDispatch를 사용하여 CCalc 클래스에 대한 IDispatch 인터페이스를 구현합니다.
CCalc FAR*
CCalc::Create()
{
HRESULT hresult;
CCalc * pcalc;
CArith * parith;
ITypeInfo* ptinfo;
IUnknown * punkStdDisp;
extern INTERFACEDATA NEARDATA g_idataCCalc;
if((pcalc = new FAR CCalc()) == NULL)
return NULL;
pcalc->AddRef();
parith = &(pcalc->m_arith);
// Build type information for the functionality on this object that
// is being exposed for external programmability.
hresult = CreateDispTypeInfo(
&g_idataCCalc, LOCALE_SYSTEM_DEFAULT, &ptinfo);
if(hresult != NOERROR)
goto LError0;
// Create an aggregate with an instance of the default
// implementation of IDispatch that is initialized with
// type information.
hresult = CreateStdDispatch(
pcalc, // Controlling unknown.
parith, // Instance to dispatch on.
ptinfo, // Type information describing the instance.
&punkStdDisp);
ptinfo-&>Release();
if(hresult != NOERROR)
goto LError0;
pcalc->m_punkStdDisp = punkStdDisp;
return pcalc;
LError0:;
pcalc->Release();
return NULL;
}
요구 사항
요구 사항 | 값 |
---|---|
대상 플랫폼 | Windows |
헤더 | oleauto.h |
라이브러리 | OleAut32.lib |
DLL | OleAut32.dll |