Метод 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 содержит дочерний идентификатор дочернего элемента с фокусом клавиатуры. |
|
Элемент pdispVal — это адрес интерфейса IDispatch для дочернего объекта с фокусом клавиатуры. |
Возвращаемое значение
Тип: HRESULT
Возвращает значение S_OK, если операция завершилась успешно.
В противном случае возвращает одно из значений в следующей таблице или другой стандартный код ошибки COM. Серверы возвращают эти значения, но клиенты должны всегда проверка выходные параметры, чтобы убедиться, что они содержат допустимые значения. Дополнительные сведения см. в разделе Проверка возвращаемых значений IAccessible.
Ошибка | Описание |
---|---|
|
Объект является окном, но не окном переднего плана. |
|
Объект не поддерживает это свойство. |
Комментарии
Концепция фокусировки клавиатуры связана с концепцией активного окна. Активное окно — это окно переднего плана, с которым работает пользователь. Объект с фокусом клавиатуры является активным окном или дочерним объектом активного окна.
Фокус в любой момент времени находится только на одном объекте или элементе в контейнере. Объект с фокусом клавиатуры не всегда является выбранным объектом. Дополнительные сведения о различиях между выделением и фокусом см. в разделе Свойства и методы выделения и фокуса.
Этот метод возвращает либо указатель интерфейса 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 |