デュアル インターフェイス: IAccessible と IDispatch
サーバー開発者は、アクセス可能なオブジェクトに対して標準のコンポーネント オブジェクト モデル (COM) インターフェイス IDispatch を提供する必要があります。 IDispatch インターフェイスを使用すると、Microsoft Visual Basic およびさまざまなスクリプト言語で記述されたクライアント アプリケーションで 、IAccessible によって公開されるメソッドとプロパティを使用できます。 アクセス可能なオブジェクトは、 IDispatch::Invoke を介して間接的に、または IAccessible を使用して直接オブジェクトにアクセスできるため、デュアル インターフェイスがあると言われます。
C/C++ クライアントが IDispatch インターフェイス ポインターを取得すると、クライアントは QueryInterface を 呼び出して、IDispatch インターフェイス ポインターを IAccessible インターフェイス ポインターに変換できます。 IAccessible メソッドを間接的に呼び出すために、C/C++ クライアントは IDispatch::Invoke を呼び出します。 パフォーマンスを向上させるには、 IAccessible メソッドを呼び出して オブジェクトを直接使用します。
IDispatch が IAccessible メソッドとプロパティを識別するために使用するディスパッチ ID (DISPID) の一覧については、「付録 C: IAccessible DISPIDs」を参照してください。
注意
Microsoft Active Accessibility のバージョン 2.0 以降では、サーバーは IDispatch のメソッドを完全に実装する必要はありませんが、次の例に示すように、out パラメーターを初期化した後に単にE_NOTIMPLを返すことができます。
HRESULT STDMETHODCALLTYPE AccServer::GetTypeInfoCount(UINT* pctinfo)
{
*pctinfo = 0;
return E_NOTIMPL;
};