IAccessible::get_accFocus メソッド (oleacc.h)

IAccessible::get_accFocus メソッドは、キーボード フォーカスを持つオブジェクトを取得します。 キーボード フォーカスを受け取る可能性のあるすべてのオブジェクトは、このプロパティをサポートする必要があります。

構文

HRESULT get_accFocus(
  [out, retval] VARIANT *pvarChild
);

パラメーター

[out, retval] pvarChild

型: VARIANT*

フォーカスがあるオブジェクトに関する情報を受け取る VARIANT 構造体 のアドレス。 次の表では、 pvarID で返される情報について説明します。

意味
VT_EMPTY
[なし] : このオブジェクトも子オブジェクトにもキーボード フォーカスはありません。
VT_I4
lVal がCHILDID_SELF。 オブジェクト自体にキーボード フォーカスがあります。
VT_I4
lVal には、キーボード フォーカスを持つ子要素の子 ID が含まれます。
VT_DISPATCH
pdispVal メンバーは、キーボード フォーカスを持つ子オブジェクトの IDispatch インターフェイス のアドレスです。

戻り値

型: HRESULT

成功した場合は、S_OK を返します。

成功しなかった場合は、次のテーブルの値の 1 つ、または別の標準 COM エラー コードを返します。 サーバーはこれらの値を返しますが、クライアントは常に出力パラメーターをチェックして、有効な値が含まれていることを確認する必要があります。 詳細については、「 IAccessible 戻り値の確認」を参照してください。

エラー 説明
S_FALSE
オブジェクトはウィンドウですが、前景ウィンドウではありません。
DISP_E_MEMBERNOTFOUND
オブジェクトは、このプロパティをサポートしていません。

注釈

キーボード フォーカスの概念は、アクティブ ウィンドウの概念に関連しています。 アクティブ ウィンドウは、ユーザーが作業する前景ウィンドウです。 キーボード フォーカスを持つオブジェクトは、アクティブ ウィンドウまたはアクティブ ウィンドウの子オブジェクトです。

コンテナー内の 1 つのオブジェクトまたは項目だけが、一度にフォーカスを持ちます。 キーボード フォーカスを持つオブジェクトが、常に選択されているオブジェクトであるとは限りません。 選択とフォーカスの違いの詳細については、「 選択とフォーカスのプロパティとメソッド」を参照してください。

このメソッドは、pvarIDIDispatch インターフェイス ポインターまたは子 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

こちらもご覧ください

Iaccessible

IAccessible::accSelect

IAccessible::get_accSelection

IDispatch

選択とフォーカスのプロパティとメソッド