次の方法で共有


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

サーバー開発者は、アクセス可能なオブジェクトの IDispatch標準コンポーネント オブジェクト モデル (COM) インターフェイスを提供する必要があります。 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;
};