Método IAccessible::get_accRole (oleacc.h)
El método IAccessible::get_accRole recupera información que describe el rol del objeto especificado. Todos los objetos admiten esta propiedad.
Sintaxis
HRESULT get_accRole(
[in] VARIANT varChild,
[out, retval] VARIANT *pvarRole
);
Parámetros
[in] varChild
Tipo: VARIANT
Especifica si la información de rol recuperada pertenece al objeto o a uno de los elementos secundarios del objeto. Este parámetro es CHILDID_SELF (para obtener información sobre el objeto) o un identificador secundario (para obtener información sobre el elemento secundario del objeto). Para obtener más información sobre cómo inicializar variant, vea Cómo se usan los identificadores secundarios en parámetros.
[out, retval] pvarRole
Tipo: VARIANT*
Dirección de un variant que recibe una constante de rol de objeto . El miembro vt debe ser VT_I4. El miembro lVal recibe una constante de rol de objeto.
Valor devuelto
Tipo: HRESULT
Si se ejecuta correctamente, devuelve S_OK.
Si no se ejecuta correctamente, devuelve uno de los valores de la tabla siguiente u otro código de error COM estándar. Los servidores devuelven estos valores, pero los clientes siempre deben comprobar los parámetros de salida para asegurarse de que contienen valores válidos. Para obtener más información, vea Comprobar valores devueltos de IAccessible.
Error | Descripción |
---|---|
|
Un argumento no es válido. |
Comentarios
Los clientes llaman a GetRoleText para recuperar una cadena localizada que describe el rol del objeto.
Nota para los desarrolladores de servidores: Debe usar las constantes de rol predefinidas.
Ejemplo de servidor
El código de ejemplo siguiente es una posible implementación de este método para un cuadro de lista personalizado que mantiene sus propios elementos de lista.
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;
};
Ejemplo de cliente
La siguiente función de ejemplo muestra el rol de un objeto o elemento secundario accesible.
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;
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 Professional [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2003 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | oleacc.h |
Library | Oleacc.lib |
Archivo DLL | Oleacc.dll |
Redistribuible | RDK de accesibilidad activa 1.3 en Windows NT 4.0 con SP6 y versiones posteriores y Windows 95 |