デュアル インターフェイス: IAccessible と IDispatch

サーバー開発者は、アクセス可能なオブジェクトに対して標準のコンポーネント オブジェクト モデル (COM) インターフェイス IDispatch を提供する必要があります。 IDispatch インターフェイスを使用すると、Microsoft Visual Basic およびさまざまなスクリプト言語で記述されたクライアント アプリケーションで 、IAccessible によって公開されるメソッドとプロパティを使用できます。 アクセス可能なオブジェクトは、 IDispatch::Invoke を介して間接的に、または IAccessible を使用して直接オブジェクトにアクセスできるため、デュアル インターフェイスがあると言われます。

C/C++ クライアントが IDispatch インターフェイス ポインターを取得すると、クライアントは QueryInterface を 呼び出して、IDispatch インターフェイス ポインターを IAccessible インターフェイス ポインターに変換できます。 IAccessible メソッドを間接的に呼び出すために、C/C++ クライアントは IDispatch::Invoke を呼び出します。 パフォーマンスを向上させるには、 IAccessible メソッドを呼び出して オブジェクトを直接使用します。

IDispatchIAccessible メソッドとプロパティを識別するために使用するディスパッチ 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;
};