Blocco eventi
Un contenitore può notificare a un controllo che non è pronto per rispondere agli eventi chiamando IOleControl::FreezeEvents con TRUE. Può sbloccare gli eventi chiamando FreezeEvents con FAL edizione Standard. Quando un contenitore blocca gli eventi, viene bloccata l'elaborazione degli eventi, non la ricezione di eventi; ovvero, un contenitore può comunque ricevere eventi mentre gli eventi sono bloccati. Se un contenitore riceve una notifica di evento mentre gli eventi sono bloccati, il contenitore deve ignorare l'evento. Nessun'altra azione è appropriata.
Un controllo deve prendere nota della chiamata di un contenitore a FreezeEvents con TRUE se è importante controllare che un evento non venga perso. Mentre l'elaborazione di eventi di un contenitore è bloccata, un controllo deve implementare una delle tecniche seguenti:
- Generare gli eventi nella conoscenza completa che il contenitore non eseguirà alcuna azione.
- Ignora tutti gli eventi che il controllo avrebbe generato.
- Accoda tutti gli eventi in sospeso e li attiva dopo che il contenitore ha chiamato FreezeEvents con FAL edizione Standard.
- Accodare solo eventi rilevanti o importanti e attivarli dopo che il contenitore ha chiamato FreezeEvents con FAL edizione Standard.
Ogni tecnica è accettabile e appropriata in circostanze diverse. Lo sviluppatore di controlli è responsabile della determinazione e dell'implementazione della tecnica appropriata per la funzionalità del controllo.