Partager via


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

La méthode IAccessible::accDoDefaultAction effectue l’action par défaut de l’objet spécifié. Les objets n'ont pas tous une action par défaut.

Syntaxe

HRESULT accDoDefaultAction(
  [in] VARIANT varChild
);

Paramètres

[in] varChild

Type : VARIANT

Spécifie si l’action par défaut appartient à l’objet ou à l’un des éléments enfants de l’objet. Pour plus d’informations sur l’initialisation du VARIANT, consultez Utilisation des ID enfants dans les paramètres.

Valeur retournée

Type : HRESULT

En cas de réussite, retourne S_OK.

En cas de non-réussite, retourne l’une des valeurs de la table qui suit ou un autre code d’erreur COM standard.

Error Description
DISP_E_MEMBERNOTFOUND
L’objet ne prend pas en charge la méthode. Cette valeur est retournée pour les contrôles qui n’effectuent pas d’actions, telles que les champs de modification.
E_INVALIDARG
Un argument n’est pas valide.

Notes

Les clients récupèrent une chaîne qui décrit l’action par défaut de l’objet en appelant IAccessible::get_accDefaultAction.

Remarque aux développeurs clients : Lorsqu’il est utilisé sur un élément de menu dans un menu système standard, accDoDefaultAction retourne S_OK, mais ne parvient pas à effectuer l’action si le caractère utilisé dans la touche d’accès (le caractère souligné dans le texte d’un nom d’élément de menu, également appelé mnémonique) est ?, !, @, ou tout autre caractère qui nécessite la touche MAJ ou une autre touche de modificateur. Cela se produit également sur les claviers internationaux avec un caractère de touche d’accès qui nécessite d’appuyer sur la touche ALT GR. Ce n’est pas un problème pour les menus dans d’autres applications, telles que Microsoft Office ou Windows Internet Explorer. Pour plus d’informations sur les clés d’accès, consultez IAccessible::get_accKeyboardShortcut.

En outre, alors que accDoDefaultAction est censé retourner immédiatement, certaines implémentations bloquent le retour. Par exemple, si cliquer sur un lien affiche un dialogue, certaines implémentations bloquent le retour jusqu’à ce que la boîte de dialogue soit ignorée. De tels retards peuvent empêcher les applications clientes de traiter une boîte de dialogue. Les serveurs doivent éviter les implémentations qui bloquent les retours.

Exemple de serveur

L’exemple suivant montre une implémentation possible pour un contrôle de liste personnalisé dont l’action par défaut est un double-clic sur un élément enfant. Pour éviter le blocage, la méthode publie un message personnalisé qui, lorsqu’il est reçu par la fenêtre de contrôle, déclenche une action, telle que l’affichage des propriétés d’élément.

// Assume a previous definition such as this: 
// #define CUSTOMLB_DEFERDOUBLECLICK   (WM_USER + 1) 

HRESULT STDMETHODCALLTYPE AccServer::accDoDefaultAction( 
    VARIANT varChild) 
{
    if (varChild.vt != VT_I4)
    {
        return E_INVALIDARG;
    }
    if (varChild.lVal != CHILDID_SELF)
    {
        // It is assumed that the control does its own checking to see which 
        // item has the focus when it receives this message.
        PostMessage(m_hwnd, CUSTOMLB_DEFERDOUBLECLICK, 0, 0);
    }
    return S_OK;
};

Exemple de client

L’exemple de fonction suivant effectue l’action par défaut sur un contrôle.

HRESULT DoAction(IAccessible* pAcc)
{
        VARIANT varId;
        varId.vt = VT_I4;
        varId.lVal = CHILDID_SELF;
        return pAcc->accDoDefaultAction(varId);
}

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 Server 4.0 avec SP6 et versions ultérieures et Windows 95

Voir aussi

Annexe A : Référence des éléments d’interface utilisateur pris en charge

Propriété DefaultAction

Iaccessible

IAccessible::get_accDefaultAction

IAccessible::get_accKeyboardShortcut

VARIANTE