次の方法で共有


CreateStdDispatch 関数 (oleauto.h)

1 つの関数呼び出しを使用して 、IDispatch インターフェイスの標準実装を作成します。 これにより、オートメーションを使用してオブジェクトを簡単に公開できます。

構文

HRESULT CreateStdDispatch(
  IUnknown  *punkOuter,
  void      *pvThis,
  ITypeInfo *ptinfo,
  IUnknown  **ppunkStdDisp
);

パラメーター

punkOuter

オブジェクトの IUnknown 実装。

pvThis

公開するオブジェクト。

ptinfo

公開されているオブジェクトを記述する型情報。

ppunkStdDisp

IDispatch インターフェイス QueryInterface 呼び出しを実装するオブジェクトのプライベート不明。 関数が失敗した場合、このポインターは null です。

戻り値

この関数は、これらの値のいずれかを返すことができます。

リターン コード 説明
S_ok
正常終了しました。
E_INVALIDARG
最初の 3 つの引数のいずれかが無効です。
E_OUTOFMEMORY
操作を完了するためのメモリが不足していました。

注釈

オブジェクトの IDispatch メンバー関数を実装する代わりに、オブジェクトを作成するときに CreateStdDispatch を使用できます。 ただし、 CreateStdDispatch によって作成される実装には、次の制限があります。

  • 1 つの各国語のみをサポートします。
  • Invoke から返されるディスパッチ定義例外コードのみをサポート します

LoadTypeLibGetTypeInfoOfGuidCreateStdDispatch は、タイプ ライブラリを使用してオブジェクトを公開するために呼び出す必要がある関数の最小セットで構成されます。 LoadTypeLibGetTypeInfoOfGuid の詳細については、「型の説明インターフェイス」を参照してください。

CreateDispTypeInfoCreateStdDispatch は、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
Library OleAut32.lib
[DLL] OleAut32.dll

こちらもご覧ください

ディスパッチ API 関数の作成

IDispatch