Поделиться через


Метод 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 содержит дочерний идентификатор дочернего элемента с фокусом клавиатуры.
VT_DISPATCH
Элемент pdispVal — это адрес интерфейса IDispatch для дочернего объекта с фокусом клавиатуры.

Возвращаемое значение

Тип: HRESULT

Возвращает значение S_OK, если операция завершилась успешно.

В противном случае возвращает одно из значений в следующей таблице или другой стандартный код ошибки COM. Серверы возвращают эти значения, но клиенты должны всегда проверка выходные параметры, чтобы убедиться, что они содержат допустимые значения. Дополнительные сведения см. в разделе Проверка возвращаемых значений IAccessible.

Ошибка Описание
S_FALSE
Объект является окном, но не окном переднего плана.
DISP_E_MEMBERNOTFOUND
Объект не поддерживает это свойство.

Комментарии

Концепция фокусировки клавиатуры связана с концепцией активного окна. Активное окно — это окно переднего плана, с которым работает пользователь. Объект с фокусом клавиатуры является активным окном или дочерним объектом активного окна.

Фокус в любой момент времени находится только на одном объекте или элементе в контейнере. Объект с фокусом клавиатуры не всегда является выбранным объектом. Дополнительные сведения о различиях между выделением и фокусом см. в разделе Свойства и методы выделения и фокуса.

Этот метод возвращает либо указатель интерфейса IDispatch , либо дочерний идентификатор для pvarID. Дополнительные сведения об использовании указателя интерфейса IDispatch или дочернего идентификатора см. в разделе Использование идентификаторов дочерних элементов в параметрах.

Как и в случае с другими методами и функциями IAccess , клиенты могут получать ошибки для указателей интерфейса IAccess из-за действия пользователя. Дополнительные сведения см. в разделе Получение ошибок для указателей интерфейса IAccessible.

Пример сервера

В следующем примере кода показана возможная реализация этого метода для настраиваемого списка с одним выбором. Если элемент управления не имеет фокуса, VT_EMPTY возвращается в варианте стандартным доступным объектом для HWND. Если элемент управления имеет фокус и выбран элемент, возвращается дочерний идентификатор этого элемента; Если выбор отсутствует, возвращается 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
Header oleacc.h
Библиотека Oleacc.lib
DLL Oleacc.dll
Распространяемые компоненты Активные специальные возможности 1.3 RDK в Windows NT 4.0 с пакетом обновления 6 (SP6) и более поздних версий и Windows 95

См. также раздел

IAccessible

IAccessible::accSelect

IAccessible::get_accSelection

IDispatch

Свойства и методы выделения и фокуса