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

El método IAccessible::accDoDefaultAction realiza la acción predeterminada del objeto especificado. No todos los objetos tienen una acción predeterminada.

Sintaxis

HRESULT accDoDefaultAction(
  [in] VARIANT varChild
);

Parámetros

[in] varChild

Tipo: VARIANT

Especifica si la acción predeterminada pertenece al objeto o a uno de los elementos secundarios del objeto. Para obtener más información sobre cómo inicializar variant, vea Cómo se usan los identificadores secundarios en parámetros.

Valor devuelto

Tipo: HRESULT

Si se ejecuta correctamente, devuelve S_OK.

Si no se ejecuta correctamente, devuelve uno de los valores de la tabla siguiente u otro código de error COM estándar.

Error Descripción
DISP_E_MEMBERNOTFOUND
El objeto no admite el método . Este valor se devuelve para los controles que no realizan acciones, como los campos de edición.
E_INVALIDARG
Un argumento no es válido.

Comentarios

Los clientes recuperan una cadena que describe la acción predeterminada del objeto mediante una llamada a IAccessible::get_accDefaultAction.

Nota para los desarrolladores cliente: Cuando se usa en un elemento de menú de un menú del sistema estándar, accDoDefaultAction devuelve S_OK pero no puede realizar la acción si el carácter usado en la tecla de acceso (el carácter subrayado en el texto de un nombre de elemento de menú, también denominado mnemonic) es ?, !, @, o cualquier otro carácter que requiera la tecla MAYÚS u otra tecla modificadora. Esto también ocurre en teclados internacionales con un carácter de tecla de acceso que requiere que se presione la tecla ALT GR. Este no es un problema para los menús de otras aplicaciones, como Microsoft Office o Windows Internet Explorer. Para obtener más información sobre las claves de acceso, vea IAccessible::get_accKeyboardShortcut.

Además, aunque accDoDefaultAction se supone que se devuelve inmediatamente, algunas implementaciones bloquean la devolución. Por ejemplo, si al hacer clic en un vínculo se muestra un cuadro de diálogo, algunas implementaciones bloquearán la devolución hasta que se descarte el diálogo. Estos retrasos pueden impedir que las aplicaciones cliente procesen un cuadro de diálogo. Los servidores deben evitar implementaciones que bloqueen devoluciones.

Ejemplo de servidor

En el ejemplo siguiente se muestra una posible implementación de un control de lista personalizado cuya acción predeterminada es un elemento secundario con doble clic. Para evitar el bloqueo, el método publica un mensaje personalizado que, cuando recibe la ventana de control, desencadena una acción, como mostrar las propiedades del elemento.

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

Ejemplo de cliente

La siguiente función de ejemplo realiza la acción predeterminada en un control .

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

Requisitos

   
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado oleacc.h
Library Oleacc.lib
Archivo DLL Oleacc.dll
Redistribuible RDK de accesibilidad activa 1.3 en Windows NT Server 4.0 con SP6 y versiones posteriores y Windows 95

Consulte también

Apéndice A: Referencia de elementos de la interfaz de usuario admitida

DefaultAction (propiedad)

IAccessible

IAccessible::get_accDefaultAction

IAccessible::get_accKeyboardShortcut

VARIANT