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

La méthode IAccessible::accLocation récupère l’emplacement d’écran actuel de l’objet spécifié. Tous les objets visuels doivent prendre en charge cette méthode. Les objets sonores ne prennent pas en charge cette méthode.

Syntaxe

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

Paramètres

[out] pxLeft

Type : long*

Adresse, en coordonnées d’écran physiques, de la variable qui reçoit la coordonnée x de la limite supérieure gauche de l’emplacement de l’objet.

[out] pyTop

Type : long*

Adresse, en coordonnées d’écran physiques, de la variable qui reçoit la coordonnée y de la limite supérieure gauche de l’emplacement de l’objet.

[out] pcxWidth

Type : long*

Adresse, en pixels, de la variable qui reçoit la largeur de l’objet.

[out] pcyHeight

Type : long*

Adresse, en pixels, de la variable qui reçoit la hauteur de l’objet.

[in] varChild

Type : VARIANT

Spécifie si l’emplacement retourné par le serveur doit être celui de l’objet ou celui de l’un des éléments enfants de l’objet. Ce paramètre est CHILDID_SELF (pour obtenir des informations sur l’objet) ou un ID enfant (pour obtenir des informations sur l’élément enfant de l’objet). Pour plus d’informations sur l’initialisation de la structure VARIANT, consultez Utilisation des ID enfants dans les paramètres.

Valeur retournée

Type : HRESULT

En cas de réussite, retourne S_OK. Les clients doivent toujours case activée que les paramètres de sortie contiennent des valeurs valides.

En cas d’erreur, retourne l’une des valeurs de la table qui suit ou un autre code d’erreur COM standard. Pour plus d’informations, consultez Vérification des valeurs de retour IAccessible.

Error Description
DISP_E_MEMBERNOTFOUND
L’objet ne prend pas en charge cette méthode.
E_INVALIDARG
Un argument n’est pas valide.

Notes

Cette méthode récupère le rectangle englobant de l’objet. Si l’objet a une forme non rectangulaire, cette méthode retourne le plus petit rectangle qui englobe complètement la région entière de l’objet. Pour les objets non rectangulaires, les coordonnées du rectangle englobant de l’objet peuvent échouer si elles sont testées avec IAccessible::accHitTest. Des exemples de ces objets non rectangulaires sont les éléments d’affichage de liste en mode icône volumineuse où un seul élément a un rectangle pour l’icône et un autre rectangle pour le texte de l’icône. Étant donné que accLocation retourne un rectangle englobant, tous les points de ce rectangle ne se trouvent pas dans les limites réelles de l’objet. Certains points du rectangle englobant peuvent ne pas se trouver sur l’objet . Pour plus d’informations, consultez Navigation Through Hit Testing et Emplacement de l’écran.

Note: Cette méthode retourne la largeur et la hauteur. Si vous souhaitez obtenir les coordonnées droite et inférieure, calculez-les à l’aide de droite = gauche + largeur, et bas = haut + hauteur.

Exemple de serveur

L’exemple suivant montre une implémentation possible de la méthode pour une zone de liste personnalisée dont les éléments de liste sont des éléments enfants. Pour la zone de liste elle-même, l’appel est passé à l’objet accessible standard, qui retourne les coordonnées d’écran de la fenêtre.

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

Spécifications

   
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête oleacc.h
Bibliothèque Oleacc.lib
DLL Oleacc.dll
Composant redistribuable Active Accessibility 1.3 RDK sur Windows NT 4.0 avec SP6 et versions ultérieures et Windows 95

Voir aussi

Accessibilité active et mise à l’échelle de l’écran Windows Vista

Iaccessible

IAccessible::accHitTest

Navigation via le test d’accès et l’emplacement de l’écran

VARIANTE