IAccessible::get_accFocus メソッド (oleacc.h)
IAccessible::get_accFocus メソッドは、キーボード フォーカスを持つオブジェクトを取得します。 キーボード フォーカスを受け取る可能性のあるすべてのオブジェクトは、このプロパティをサポートする必要があります。
構文
HRESULT get_accFocus(
[out, retval] VARIANT *pvarChild
);
パラメーター
[out, retval] pvarChild
型: VARIANT*
フォーカスがあるオブジェクトに関する情報を受け取る VARIANT 構造体 のアドレス。 次の表では、 pvarID で返される情報について説明します。
値 | 意味 |
---|---|
|
[なし] : このオブジェクトも子オブジェクトにもキーボード フォーカスはありません。 |
|
lVal がCHILDID_SELF。 オブジェクト自体にキーボード フォーカスがあります。 |
|
lVal には、キーボード フォーカスを持つ子要素の子 ID が含まれます。 |
|
pdispVal メンバーは、キーボード フォーカスを持つ子オブジェクトの IDispatch インターフェイス のアドレスです。 |
戻り値
型: HRESULT
成功した場合は、S_OK を返します。
成功しなかった場合は、次のテーブルの値の 1 つ、または別の標準 COM エラー コードを返します。 サーバーはこれらの値を返しますが、クライアントは常に出力パラメーターをチェックして、有効な値が含まれていることを確認する必要があります。 詳細については、「 IAccessible 戻り値の確認」を参照してください。
エラー | 説明 |
---|---|
|
オブジェクトはウィンドウですが、前景ウィンドウではありません。 |
|
オブジェクトは、このプロパティをサポートしていません。 |
注釈
キーボード フォーカスの概念は、アクティブ ウィンドウの概念に関連しています。 アクティブ ウィンドウは、ユーザーが作業する前景ウィンドウです。 キーボード フォーカスを持つオブジェクトは、アクティブ ウィンドウまたはアクティブ ウィンドウの子オブジェクトです。
コンテナー内の 1 つのオブジェクトまたは項目だけが、一度にフォーカスを持ちます。 キーボード フォーカスを持つオブジェクトが、常に選択されているオブジェクトであるとは限りません。 選択とフォーカスの違いの詳細については、「 選択とフォーカスのプロパティとメソッド」を参照してください。
このメソッドは、pvarID の IDispatch インターフェイス ポインターまたは子 ID を返します。 IDispatch インターフェイス ポインターまたは子 ID の使用方法の詳細については、「パラメーターでの子 ID の使用方法」を参照してください。
他 の IAccessible メソッドや関数と同様に、クライアントはユーザー アクションのために IAccessible インターフェイス ポインターのエラーを受け取る可能性があります。 詳細については、「 IAccessible インターフェイス ポインターのエラーの受信」を参照してください。
サーバーの例
次のコード例は、カスタムの単一選択リスト ボックスに対してこのメソッドを実装できる方法を示しています。 コントロールにフォーカスがない場合、VT_EMPTYは HWND の標準のアクセシビリティ対応オブジェクトによって バリアントで返されます。 コントロールにフォーカスがあり、項目が選択されている場合は、その項目の子 ID が返されます。選択されていない場合は、CHILDID_SELFが返されます。
// m_pControl is the control object that is served by this implementation.
// m_pStdAccessibleObject is the object returned by CreateStdAccessibleObject.
HRESULT STDMETHODCALLTYPE AccServer::get_accFocus(VARIANT *pvarChild)
{
FAIL_IF_NO_CONTROL; // Macro that checks for existence of control.
HRESULT hr = m_pStdAccessibleObject->get_accFocus(pvarChild);
if (pvarChild->vt != VT_I4)
{
return hr;
}
else
{
int index = m_pControl->GetSelectedIndex();
if (index <0)
{
pvarChild->lVal = CHILDID_SELF;
}
else
{
// Convert to 1-based index for child ID.
pvarChild->lVal = index + 1;
}
}
return S_OK;
};
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | oleacc.h |
Library | Oleacc.lib |
[DLL] | Oleacc.dll |
再頒布可能パッケージ | SP6 以降および Windows 95 を使用した Windows NT 4.0 のアクティブなアクセシビリティ 1.3 RDK |