Condividi tramite


Metodo IAccess::accDoDefaultAction (oleacc.h)

Il metodo IAccess::accDoDefaultAction esegue l'azione predefinita dell'oggetto specificato. Non a tutti gli oggetti è associata un'azione predefinita.

Sintassi

HRESULT accDoDefaultAction(
  [in] VARIANT varChild
);

Parametri

[in] varChild

Tipo: VARIANT

Specifica se l'azione predefinita appartiene all'oggetto o a uno degli elementi figlio dell'oggetto. Per altre informazioni sull'inizializzazione di VARIANT, vedere Come vengono usati gli ID figlio nei parametri.

Valore restituito

Tipo: HRESULT

Se ha esito positivo, restituisce S_OK.

In caso contrario, restituisce uno dei valori della tabella che segue o un altro codice di errore COM standard.

Errore Descrizione
DISP_E_MEMBERNOTFOUND
L'oggetto non supporta il metodo. Questo valore viene restituito per i controlli che non eseguono azioni, ad esempio modificare i campi.
E_INVALIDARG
Un argomento non è valido.

Commenti

I client recuperano una stringa che descrive l'azione predefinita dell'oggetto chiamando IAccess::get_accDefaultAction.

Nota per gli sviluppatori client: Quando viene utilizzata in una voce di menu in un menu di sistema standard, accDoDefaultAction restituisce S_OK ma non riesce a eseguire l'azione se il carattere utilizzato nella chiave di accesso (il carattere sottolineato nel testo di un nome della voce di menu, chiamato anche mnemonic) è ?, !, @o qualsiasi altro carattere che richiede il tasto MAIUSC o un altro tasto modificatore. Ciò avviene anche su tastiere internazionali con un carattere di tasto di accesso che richiede che il tasto ALT GR venga premuto. Questo non è un problema per i menu in altre applicazioni, ad esempio Microsoft Office o Windows Internet Explorer. Per altre informazioni sulle chiavi di accesso, vedere IAccessibile::get_accKeyboardShortcut.

Inoltre, mentre accDoDefaultAction dovrebbe restituire immediatamente, alcune implementazioni bloccano la restituzione. Ad esempio, se si fa clic su un collegamento viene visualizzata una finestra di dialogo, alcune implementazioni bloccano la restituzione fino a quando la finestra di dialogo non viene ignorata. Tali ritardi possono impedire alle applicazioni client di elaborare una finestra di dialogo. I server devono evitare implementazioni che restituiscono il blocco.

Esempio di server

Nell'esempio seguente viene illustrata un'implementazione possibile per un controllo elenco personalizzato il cui azione predefinita è un elemento figlio doppio clic. Per impedire il blocco, il metodo pubblica un messaggio personalizzato che, quando ricevuto dalla finestra di controllo, attiva un'azione, ad esempio la visualizzazione delle proprietà dell'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;
};

Esempio client

La funzione di esempio seguente esegue l'azione predefinita in un controllo.

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

Requisiti

   
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione oleacc.h
Libreria Oleacc.lib
DLL Oleacc.dll
Componente ridistribuibile Accessibilità attiva 1.3 RDK in Windows NT Server 4.0 con SP6 e versioni successive e Windows 95

Vedi anche

Appendice A: Informazioni di riferimento sugli elementi dell'interfaccia utente supportati

DefaultAction, proprietà

Iaccessible

IAccessibile::get_accDefaultAction

IAccessibile::get_accKeyboardShortcut

VARIANTE