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

O método IAccessible::accDoDefaultAction executa a ação padrão do objeto especificado. Nem todos os objetos têm uma ação padrão.

Sintaxe

HRESULT accDoDefaultAction(
  [in] VARIANT varChild
);

Parâmetros

[in] varChild

Tipo: VARIANT

Especifica se a ação padrão pertence ao objeto ou a um dos elementos filho do objeto. Para obter mais informações sobre como inicializar o VARIANT, consulte Como as IDs filho são usadas em parâmetros.

Valor retornado

Tipo: HRESULT

Se for bem-sucedido, retornará S_OK.

Se não for bem-sucedido, retornará um dos valores na tabela a seguir ou outro código de erro COM padrão.

Erro Descrição
DISP_E_MEMBERNOTFOUND
O objeto não dá suporte ao método . Esse valor é retornado para controles que não executam ações, como campos de edição.
E_INVALIDARG
Um argumento não é válido.

Comentários

Os clientes recuperam uma cadeia de caracteres que descreve a ação padrão do objeto chamando IAccessible::get_accDefaultAction.

Observação aos desenvolvedores cliente: Quando usado em um item de menu em um menu do sistema padrão, accDoDefaultAction retorna S_OK mas não executa a ação se o caractere usado na tecla de acesso (o caractere sublinhado no texto de um nome de item de menu, também chamado de mnemônico) é ?, !, @ou qualquer outro caractere que exija a tecla SHIFT ou outra tecla modificadora. Isso também acontece em teclados internacionais com um caractere de tecla de acesso que exige que a tecla ALT GR seja pressionada. Isso não é um problema para menus em outros aplicativos, como o Microsoft Office ou o Windows Internet Explorer. Para obter mais informações sobre chaves de acesso, consulte IAccessible::get_accKeyboardShortcut.

Além disso, enquanto accDoDefaultAction deve retornar imediatamente, algumas implementações bloqueiam o retorno. Por exemplo, se clicar em um link exibir uma caixa de diálogo, algumas implementações bloquearão o retorno até que a caixa de diálogo seja ignorada. Esses atrasos podem impedir que aplicativos cliente processem uma caixa de diálogo. Os servidores devem evitar implementações que bloqueiam os retornos.

Exemplo de servidor

O exemplo a seguir mostra uma possível implementação para um controle de lista personalizado cuja ação padrão é clicar duas vezes em um item filho. Para evitar o bloqueio, o método posta uma mensagem personalizada que, quando recebida pela janela de controle, dispara uma ação, como a exibição de propriedades do item.

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

Exemplo de cliente

A função de exemplo a seguir executa a ação padrão em um controle .

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

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho oleacc.h
Biblioteca Oleacc.lib
DLL Oleacc.dll
Redistribuível Active Accessibility 1.3 RDK no Windows NT Server 4.0 com SP6 e posterior e Windows 95

Confira também

Apêndice A: Referência de elementos de interface do usuário com suporte

Propriedade DefaultAction

Iaccessible

IAccessible::get_accDefaultAction

IAccessible::get_accKeyboardShortcut

VARIANT