Función AccessibleChildren (oleacc.h)
Recupera el identificador secundario o IDispatch de cada elemento secundario dentro de un objeto contenedor accesible.
Sintaxis
HRESULT AccessibleChildren(
[in] IAccessible *paccContainer,
[in] LONG iChildStart,
[in] LONG cChildren,
[out] VARIANT *rgvarChildren,
[out] LONG *pcObtained
);
Parámetros
[in] paccContainer
Tipo: IAccessible*
Puntero a la interfaz IAccessible del objeto contenedor.
[in] iChildStart
Tipo: LONG
Especifica el índice de base cero del primer elemento secundario que se recupera. Este parámetro es un índice, no un identificador secundario, y normalmente se establece en cero (0).
[in] cChildren
Tipo: LONG
Especifica el número de elementos secundarios que se van a recuperar. Para recuperar el número actual de elementos secundarios, una aplicación llama a IAccessible::get_accChildCount.
[out] rgvarChildren
Tipo: VARIANT*
Puntero a una matriz de estructuras VARIANT que recibe información sobre los elementos secundarios del contenedor. Si el miembro vt de un elemento de matriz es VT_I4, el miembro lVal de ese elemento es el identificador secundario. Si el miembro vt de un elemento de matriz es VT_DISPATCH, el miembro pdispVal de ese elemento es la dirección de la interfaz IDispatch del objeto secundario.
[out] pcObtained
Tipo: LONG*
Dirección de una variable que recibe el número de elementos de la matriz rgvarChildren rellenada por la función AccessibleChildren . Este valor es el mismo que el del parámetro cChildren ; Sin embargo, si solicita más elementos secundarios de los que existen, este valor será menor que el de cChildren.
Valor devuelto
Tipo: STDAPI
Si se ejecuta correctamente, devuelve S_OK.
Si no se ejecuta correctamente, devuelve uno de los siguientes u otro código de error COM estándar.
Código devuelto | Descripción |
---|---|
|
Un argumento no es válido. |
|
La función se realizó correctamente, pero hay menos elementos en la matriz rgvarChildren que los elementos secundarios solicitados en cChildren. |
Comentarios
Para recuperar información sobre todos los elementos secundarios de un contenedor, el parámetro iChildStart debe ser cero (0) y cChildren debe ser el valor devuelto por IAccessible::get_accChildCount.
Al llamar a esta función para obtener información sobre los elementos secundarios de un elemento de interfaz de usuario, se recomienda que los clientes obtengan información sobre todos los elementos secundarios. Por ejemplo, iChildStart debe ser cero (0) y cChildren debe ser el valor devuelto por IAccessible::get_accChildCount.
Si se devuelve un identificador secundario para un elemento, el contenedor debe proporcionar información sobre el elemento secundario. Para obtener información sobre el elemento, los clientes usan el puntero de interfaz IAccessible del contenedor y especifican el identificador secundario obtenido en las llamadas a las propiedades IAccessible .
Los clientes deben llamar al método IUnknown::Release para las interfaces IDispatch recuperadas por esta función y liberar la matriz cuando ya no sea necesaria.
Ejemplos
La siguiente función de ejemplo muestra una vista del árbol de elementos debajo del elemento que se pasa. El nombre y el rol de cada elemento se imprimen mediante funciones definidas por el usuario que no se muestran aquí.
HRESULT WalkTreeWithAccessibleChildren(IAccessible* pAcc, int depth)
{
HRESULT hr;
long childCount;
long returnCount;
if (!pAcc)
{
return E_INVALIDARG;
}
hr = pAcc->get_accChildCount(&childCount);
if (FAILED(hr))
{
return hr;
};
if (childCount == 0)
{
return S_FALSE;
}
VARIANT* pArray = new VARIANT[childCount];
hr = AccessibleChildren(pAcc, 0L, childCount, pArray, &returnCount);
if (FAILED(hr))
{
return hr;
};
// Iterate through children.
for (int x = 0; x < returnCount; x++)
{
VARIANT vtChild = pArray[x];
// If it's an accessible object, get the IAccessible, and recurse.
if (vtChild.vt == VT_DISPATCH)
{
IDispatch* pDisp = vtChild.pdispVal;
IAccessible* pChild = NULL;
hr = pDisp->QueryInterface(IID_IAccessible, (void**) &pChild);
if (hr == S_OK)
{
for (int y = 0; y < depth; y++)
{
printf(" ");
}
PrintName(pChild, CHILDID_SELF);
printf("(Object) ");
PrintRole(pChild, CHILDID_SELF);
WalkTreeWithAccessibleChildren(pChild, depth + 1);
pChild->Release();
}
pDisp->Release();
}
// Else it's a child element so we have to call accNavigate on the parent,
// and we do not recurse because child elements can't have children.
else
{
for (int y = 0; y < depth; y++)
{
printf(" ");
}
PrintName(pAcc, vtChild.lVal);
printf("(Child element) ");
PrintRole(pAcc, vtChild.lVal);
}
}
delete[] pArray;
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 |