Метод IAccessible::get_accRole (oleacc.h)
Метод IAccessible::get_accRole извлекает сведения, описывающие роль указанного объекта. Все объекты поддерживают это свойство.
Синтаксис
HRESULT get_accRole(
[in] VARIANT varChild,
[out, retval] VARIANT *pvarRole
);
Параметры
[in] varChild
Тип: VARIANT
Указывает, принадлежит ли полученная информация о роли объекту или одному из дочерних элементов объекта. Этот параметр CHILDID_SELF (для получения сведений об объекте) или идентификатор дочернего элемента (для получения сведений о дочернем элементе объекта). Дополнительные сведения об инициализации VARIANT см. в разделе Использование дочерних идентификаторов в параметрах.
[out, retval] pvarRole
Тип: VARIANT*
Адрес объекта VARIANT , получающего константу роли объекта . Элемент vt должен быть VT_I4. Член lVal получает константу роли объекта.
Возвращаемое значение
Тип: HRESULT
Возвращает значение S_OK, если операция завершилась успешно.
В противном случае возвращает одно из значений в следующей таблице или другой стандартный код ошибки COM. Серверы возвращают эти значения, но клиенты должны всегда проверка выходные параметры, чтобы убедиться, что они содержат допустимые значения. Дополнительные сведения см. в разделе Проверка возвращаемых значений IAccessible.
Ошибка | Описание |
---|---|
|
Аргумент является недопустимым. |
Комментарии
Клиенты вызывают GetRoleText для получения локализованной строки, описывающей роль объекта.
Обратите внимание на серверные разработчики: Необходимо использовать предопределенные константы роли.
Пример сервера
Следующий пример кода является возможной реализацией этого метода для настраиваемого списка, которое поддерживает собственные элементы списка.
HRESULT STDMETHODCALLTYPE AccServer::get_accRole(
VARIANT varChild,
VARIANT *pvarRole)
{
if (varChild.vt != VT_I4)
{
pvarRole->vt = VT_EMPTY;
return E_INVALIDARG;
}
pvarRole->vt = VT_I4;
if (varChild.lVal == CHILDID_SELF)
{
pvarRole->lVal = ROLE_SYSTEM_LIST;
}
else
{
pvarRole->lVal = ROLE_SYSTEM_LISTITEM;
}
return S_OK;
};
Пример клиента
В следующем примере функции отображается роль доступного объекта или дочернего элемента.
HRESULT PrintRole(IAccessible* pAcc, long childId)
{
DWORD roleId;
if (pAcc == NULL)
{
return E_INVALIDARG;
}
VARIANT varChild;
varChild.vt = VT_I4;
varChild.lVal = childId;
VARIANT varResult;
HRESULT hr = pAcc->get_accRole(varChild, &varResult);
if ((hr == S_OK) && (varResult.vt == VT_I4))
{
roleId = varResult.lVal;
UINT roleLength;
LPTSTR lpszRoleString;
// Get the length of the string.
roleLength = GetRoleText(roleId, NULL, 0);
// Allocate memory for the string. Add one character to
// the length you got in the previous call to make room
// for the null character.
lpszRoleString = (LPTSTR)malloc((roleLength+1) * sizeof(TCHAR));
if (lpszRoleString != NULL)
{
// Get the string.
GetRoleText(roleId, lpszRoleString, roleLength + 1);
#ifdef UNICODE
printf("Role: %S\n", lpszRoleString);
#else
printf(("Role: %s\n", lpszRoleString);
#endif
// Free the allocated memory
free(lpszRoleString);
}
else
{
return E_OUTOFMEMORY;
}
}
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 |