Partager via


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

Récupère le fournisseur de l’élément qui se trouve au point spécifié dans ce fragment.

Syntaxe

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

Paramètres

[in] x

Type : double

Coordonnée d'écran horizontale.

[in] y

Type : double

Coordonnée d'écran verticale.

[out, retval] pRetVal

Type : IRawElementProviderFragment**

Reçoit un pointeur vers le fournisseur de l’élément à (x, y) ou NULL s’il n’existe aucun élément. Ce paramètre est passé sans être initialisé.

Valeur retournée

Type : HRESULT

Si cette méthode réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.

Remarques

Le fournisseur retourné doit correspondre à l’élément qui recevrait l’entrée de la souris au point spécifié.

Si le point se trouve sur cet élément, mais pas sur un élément enfant, null ou le fournisseur de la racine du fragment est retourné. Si le point se trouve sur un élément d’une autre infrastructure hébergé par ce fragment, la méthode retourne l’élément qui héberge ce fragment (comme indiqué par IRawElementProviderFragment ::GetEmbeddedFragmentRoots).

Exemples

L’exemple suivant montre une implémentation pour une zone de liste hébergée dans un HWND dont le handle est m_controlHwnd. IndexFromY récupère l’index de l’élément de liste à la position du curseur et GetItemByIndex récupère le fournisseur UI Automation pour cet élément.

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;
}            

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête uiautomationcore.h (incluez UIAutomation.h)

Voir aussi

IRawElementProviderFragmentRoot