CreateStdDispatch 函式 (oleauto.h)
透過單一函數調用建立 IDispatch 介面的標準實作。 這可簡化透過自動化公開物件。
語法
HRESULT CreateStdDispatch(
IUnknown *punkOuter,
void *pvThis,
ITypeInfo *ptinfo,
IUnknown **ppunkStdDisp
);
參數
punkOuter
物件的 IUnknown 實作。
pvThis
要公開的物件。
ptinfo
描述已公開物件的型別資訊。
ppunkStdDisp
實作 IDispatch 介面 QueryInterface 呼叫之物件的私用未知。 如果函式失敗,則此指標為 null。
傳回值
此函式可以傳回下列其中一個值。
傳回碼 | Description |
---|---|
|
成功。 |
|
前三個自變數的其中一個無效。 |
|
記憶體不足,無法完成作業。 |
備註
您可以在建立物件時使用 CreateStdDispatch ,而不是實作物件的 IDispatch 成員函式。 不過, 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 |