Share via


Método IRawElementProviderFragmentRoot::ElementProviderFromPoint (uiautomationcore.h)

Recupera el proveedor del elemento que se encuentra en el punto especificado de este fragmento.

Sintaxis

HRESULT ElementProviderFromPoint(
  [in]          double                      x,
  [in]          double                      y,
  [out, retval] IRawElementProviderFragment **pRetVal
);

Parámetros

[in] x

Tipo: double

Coordenada horizontal de la pantalla.

[in] y

Tipo: double

Coordenada vertical de la pantalla.

[out, retval] pRetVal

Tipo: IRawElementProviderFragment**

Recibe un puntero al proveedor del elemento en (x, y) o NULL si no existe ninguno. Este parámetro se pasa sin inicializar.

Valor devuelto

Tipo: HRESULT

Si este método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.

Comentarios

El proveedor devuelto debe corresponder al elemento que recibiría la entrada del mouse en el punto especificado.

Si el punto está en este elemento pero no en ningún elemento secundario, se devuelve NULL o el proveedor de la raíz del fragmento. Si el punto está en un elemento de otro marco hospedado por este fragmento, el método devuelve el elemento que hospeda ese fragmento (como se indica en IRawElementProviderFragment::GetEmbeddedFragmentRoots).

Ejemplos

En el ejemplo siguiente se muestra una implementación de un cuadro de lista hospedado en un HWND cuyo identificador es m_controlHwnd. IndexFromY recupera el índice del elemento de lista en la posición del cursor y GetItemByIndex recupera el proveedor de Automatización de la interfaz de usuario para ese elemento.

HRESULT STDMETHODCALLTYPE ListProvider::ElementProviderFromPoint(double x, double y, IRawElementProviderFragment** pRetVal)
{
    if (pRetVal == NULL) 
    {
        return E_INVALIDARG;
    }
    POINT pt;
    pt.x = (LONG)x;
    pt.y = (LONG)y;
    ScreenToClient(m_controlHwnd, &pt);
    int itemIndex = this->m_pControl->IndexFromY(m_controlHwnd, pt.y);
    ListItemProvider* pItem = GetItemByIndex(itemIndex);  
    if (pItem != NULL)
    {
        *pRetVal = (IRawElementProviderFragment*)pItem;
        pItem->AddRef();
    }
    else 
    {
        pRetVal = (IRawElementProviderFragment*)this;
        pItem->AddRef();
    }

    return S_OK;
}            

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado uiautomationcore.h (include UIAutomation.h)

Consulte también

IRawElementProviderFragmentRoot