Método IAccessible::accLocation (oleacc.h)

El método IAccessible::accLocation recupera la ubicación de pantalla actual del objeto especificado. Todos los objetos visuales deben admitir este método. Los objetos sound no admiten este método.

Sintaxis

HRESULT accLocation(
  [out] long    *pxLeft,
  [out] long    *pyTop,
  [out] long    *pcxWidth,
  [out] long    *pcyHeight,
  [in]  VARIANT varChild
);

Parámetros

[out] pxLeft

Tipo: long*

Dirección, en coordenadas de pantalla físicas, de la variable que recibe la coordenada x del límite superior izquierdo de la ubicación del objeto.

[out] pyTop

Tipo: long*

Dirección, en coordenadas de pantalla físicas, de la variable que recibe la coordenada y del límite superior izquierdo de la ubicación del objeto.

[out] pcxWidth

Tipo: long*

Dirección, en píxeles, de la variable que recibe el ancho del objeto.

[out] pcyHeight

Tipo: long*

Dirección, en píxeles, de la variable que recibe el alto del objeto.

[in] varChild

Tipo: VARIANT

Especifica si la ubicación que devuelve el servidor debe ser la del objeto o la de 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 la estructura VARIANT, vea Cómo se usan los identificadores secundarios en parámetros.

Valor devuelto

Tipo: HRESULT

Si se ejecuta correctamente, devuelve S_OK. Los clientes siempre deben comprobar que los parámetros de salida contienen valores válidos.

Si no se ejecuta correctamente, devuelve uno de los valores de la tabla siguiente u otro código de error COM estándar. Para obtener más información, vea Comprobar valores devueltos de IAccessible.

Error Descripción
DISP_E_MEMBERNOTFOUND
El objeto no admite este método.
E_INVALIDARG
Un argumento no es válido.

Comentarios

Este método recupera el rectángulo delimitador del objeto. Si el objeto tiene una forma no rectangular, este método devuelve el rectángulo más pequeño que abarca completamente toda la región del objeto. En el caso de los objetos no rectangulares, las coordenadas del rectángulo delimitador del objeto podrían producir un error si se prueba con IAccessible::accHitTest. Algunos ejemplos de estos objetos no rectangulares son elementos de vista de lista en modo de icono grande donde un solo elemento tiene un rectángulo para el icono y otro rectángulo para el texto del icono. Dado que accLocation devuelve un rectángulo delimitador, no todos los puntos de ese rectángulo estarán dentro de los límites reales del objeto. Es posible que algunos puntos dentro del rectángulo delimitador no estén en el objeto . Para obtener más información, vea Navegación a través de pruebas de posicionamiento y ubicación de pantalla.

Nota: Este método devuelve el ancho y el alto. Si desea las coordenadas derecha e inferior, calculelas con right = left + width y bottom = top + height.

Ejemplo de servidor

En el ejemplo siguiente se muestra una posible implementación del método para un cuadro de lista personalizado cuyos elementos de lista son elementos secundarios. Para el propio cuadro de lista, la llamada se pasa al objeto accesible estándar, que devuelve las coordenadas de pantalla de la ventana.

// m_pStdAccessibleObject is the standard accessible object for the control window. 
// m_pControl is the object that represents the control. Its GetItemRect method  
//   retrieves the screen coordinates of the specified item in a zero-based collection. 
// 
HRESULT STDMETHODCALLTYPE AccServer::accLocation( 
    long *pxLeft,
    long *pyTop,
    long *pcxWidth,
    long *pcyHeight,
    VARIANT varChild)
{
    *pxLeft = 0;
    *pyTop = 0;
    *pcxWidth = 0;
    *pcyHeight = 0;
    if (varChild.vt != VT_I4)
    {
        return E_INVALIDARG;
    }
    if (varChild.lVal == CHILDID_SELF)
    {
        return m_pStdAccessibleObject->accLocation(pxLeft, pyTop, pcxWidth, pcyHeight, varChild);
    }
    else
    {
        RECT rect;
        if (m_pControl->GetItemRect(varChild.lVal - 1, &rect) == FALSE)
        {
            return E_INVALIDARG;
        }
        else
        {
            *pxLeft = rect.left;
            *pyTop = rect.top;
            *pcxWidth = rect.right - rect.left;
            *pcyHeight = rect.bottom - rect.top;
            return S_OK;        
        }
    }
};

Requisitos

   
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

Consulte también

Escalado de pantalla de Accesibilidad activa y Windows Vista

IAccessible

IAccessible::accHitTest

Navegación a través de pruebas de posicionamiento y ubicación de pantalla

VARIANT