Metodo IRawElementProviderFragmentRoot::ElementProviderFromPoint (uiautomationcore.h)

Recupera il provider dell'elemento che si trova nel punto specificato in questo frammento.

Sintassi

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

Parametri

[in] x

Tipo: double

Coordinata orizzontale dello schermo.

[in] y

Tipo: double

Coordinata verticale dello schermo.

[out, retval] pRetVal

Tipo: IRawElementProviderFragment**

Riceve un puntatore al provider dell'elemento in (x, y) o NULL se non esiste alcun elemento. Questo parametro viene passato non inizializzato.

Valore restituito

Tipo: HRESULT

Se questo metodo ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .

Commenti

Il provider restituito deve corrispondere all'elemento che riceverà l'input del mouse al punto specificato.

Se il punto si trova su questo elemento ma non su alcun elemento figlio, viene restituito NULL o il provider della radice del frammento. Se il punto si trova in un altro framework ospitato da questo frammento, il metodo restituisce l'elemento che ospita tale frammento , come indicato da IRawElementProviderFragment::GetEmbeddedFragmentRoots.

Esempio

Nell'esempio seguente viene illustrata un'implementazione per una casella di riepilogo ospitata in un HWND il cui handle è m_controlHwnd. IndexFromY recupera l'indice dell'elemento di elenco nella posizione del cursore e GetItemByIndex recupera il provider di Automazione interfaccia utente per tale 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;
}            

Requisiti

Requisito Valore
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione uiautomationcore.h (includere UIAutomation.h)

Vedi anche

IRawElementProviderFragmentRoot