Share via


Eventi di controllo (COM)

Oltre a fornire proprietà e metodi, un controllo fornisce anche interfacce in uscita per notificare al client gli eventi. Il client deve supportare la gestione di questi eventi. Per altre informazioni sul funzionamento degli oggetti collegabili, vedere Eventi in COM e oggetti Connessione able.

Un controllo può supportare diverse interfacce in uscita per scopi diversi. Tutte le interfacce in uscita sono contrassegnate come interfacce di origine nelle informazioni sul tipo del controllo, ma solo una è contrassegnata come predefinita per indicare che si tratta dell'interfaccia in uscita primaria.

Un contenitore può supportare una o più interfacce in uscita definite da un controllo . Il controllo deve essere preparato per gestire i contenitori che forniscono supporto solo per alcune delle interfacce in uscita.

I controlli supportano quattro tipi di eventi:

  • Richiedere eventi. Un controllo richiede l'autorizzazione dal client per eseguire un'operazione chiamando un metodo nell'interfaccia in uscita, attivando quindi un evento di richiesta. Il client segnala il controllo tramite un parametro booleano out nel metodo chiamato dal controllo . Il client può quindi impedire al controllo di eseguire l'azione.
  • Prima degli eventi. Un controllo notifica al suo cappello client che eseguirà un'operazione chiamando un metodo nell'interfaccia in uscita, attivando così un evento prima. Il client non ha la possibilità di impedire l'azione, ma può eseguire qualsiasi azione necessaria in base all'azione che sta per verificarsi.
  • Dopo gli eventi. Un controllo notifica al client che ha appena eseguito un'operazione chiamando un metodo nell'interfaccia in uscita, attivando così un evento dopo. Anche in questo caso, il client non può annullare questa azione, ma può eseguire i passaggi necessari in base all'azione che si è verificata.
  • Eseguire eventi. Un controllo attiva un evento do per consentire al client di eseguire l'override dell'azione del controllo e fornire alcune azioni alternative o supplementari. In genere, il metodo che un controllo chiama per un evento do ha diversi parametri per negoziare con il client le azioni che si verificheranno.

I dispids seguenti sono definiti per gli eventi standard che i controlli possono supportare: Click, DblClick, KeyDown, KeyPress, KeyUp, MouseMove, MouseUp e Error. Tutti questi eventi standard hanno valori DISPID negativi, che indicano lo stato standard.

Il metodo IOleControl::FreezeEvents, quando viene chiamato con TRUE, indica a un controllo se il contenitore gestirà gli eventi dal controllo finché FreezeEvents non viene chiamato nuovamente con FAL edizione Standard. Durante questo periodo di tempo il controllo non può dipendere dal contenitore che gestisce effettivamente gli eventi. Se è necessario gestire un evento, il controllo deve accodare l'evento per attivarlo quando FreezeEvents viene chiamato con FAL edizione Standard.

Controlli ActiveX