子 ID をパラメーターで使用する方法
このトピックでは、入力パラメーター、出力パラメーター、および IAccessible メソッドから返される子 ID を解釈するための特殊なケースについて説明します。
入力パラメーター
Microsoft Active Accessibility 関数の多くおよびほとんどの IAccessible プロパティは、入力パラメーターとして VARIANT 構造体を受け取ります。 ほとんどの IAccessible プロパティの場合、このパラメーターを使用すると、クライアント開発者は、オブジェクト自体に関する情報が必要か、オブジェクトの単純な要素に関する情報が必要かを指定できます。
Microsoft Active Accessibility には、オブジェクト自体に関する情報が必要であることを示す定数 CHILDID_SELF が用意されています。 単純な要素に関する情報を取得するために、クライアント開発者は VARIANT パラメーターでその子 ID を指定します。
VARIANT パラメーターを初期化するときは、lVal メンバーで子 ID 値 (またはCHILDID_SELF) を指定するだけでなく、vt メンバーにVT_I4を指定してください。
たとえば、オブジェクトの子要素の 1 つではなく、オブジェクトの名前を取得するには、IAccessible::get_accName ( lVal メンバーにCHILDID_SELF、vt メンバー内のVT_I4) の最初のパラメーターに対して VARIANT を初期化し、IAccessible::get_accName を呼び出します。
出力パラメーター
いくつかの IAccessible 関数とメソッドには、子 ID または子オブジェクトへの IDispatch インターフェイス ポインターを含む VARIANT* 出力パラメーターがあります。 クライアントは、VT_I4子 ID (単純な要素) または CHILDID_SELF (完全なオブジェクト) を持つ IDispatch インターフェイス ポインターを受け取るかどうかに応じて、さまざまな手順 を 実行する必要があります。 これらの手順に従うと、 IAccessible インターフェイス ポインターと子 ID が提供されます。これにより、クライアントは IAccessible のメソッドとプロパティを使用できるようになります。 これらの手順は、 IAccessible::accHitTest、 get_accFocus、 および get_accSelection メソッドに適用されます。 また、 AccessibleObjectFromEvent、 AccessibleObjectFromPoint、 および AccessibleObjectFromWindow クライアント関数にも適用されます。
次の表に、クライアントが IAccessible インターフェイス ポインターと子 ID を持つよう、返される可能性のある結果と必要な後処理手順を示します。
返される結果 | 戻り値の後処理 |
---|---|
IDispatch インターフェイス ポインター | これは完全なオブジェクトです。 QueryInterface を 呼び出して 、IAccessible インターフェイス ポインターにアクセスします。 IAccessible メソッドとプロパティにアクセスするには、CHILDID_SELFと共に IAccessible インターフェイス ポインターを使用します。 |
子 ID をVT_I4する | 子 ID を使用して IAccessible::get_accChild を呼び出して、 IDispatch インターフェイス ポインターがあるかどうかを確認します。 IDispatch インターフェイス ポインターを取得する場合は、 CHILDID_SELF と共に使用して 、IAccessible インターフェイスのメソッドとプロパティにアクセスします。 get_accChildの呼び出しが失敗した場合は、単純な要素があります。 元の IAccessible インターフェイス ポインター (上記のメソッドまたは関数の呼び出しで使用したポインター) を、呼び出しから返された VT_I4 子 ID と共に使用します。 |
VARIANT パラメーターを使用する前に、VariantInit コンポーネント オブジェクト モデル (COM) 関数を呼び出して初期化する必要があります。 構造体の使用が完了したら、 VariantClear を 呼び出して、その VARIANT 用に予約されているメモリを解放します。
特殊なケース
IAccessible::accHitTest メソッドによって子 ID が返される場合など、上記の表のガイドラインには例外があります。 子がアクセス可能なオブジェクトである場合、サーバーは IDispatch インターフェイスを返す必要があります。 IAccessible::accHitTest によって子 ID が返される場合、子は単純な要素です。
さらに、 accNavigate には特別なケースがあります。 詳細については、「 IAccessible::accNavigate 」および 「Spatial and Logical Navigation」を参照してください。