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 |
---|---|
|
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. |
|
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
IAccessible::get_accDefaultAction