Udostępnij przez


Zamrażanie zdarzeń

Kontener może powiadomić kontrolkę, że nie jest gotowa reagować na zdarzenia, wywołując IOleControl::FreezeEvents za pomocą TRUE. Może ona odblokować zdarzenia, wywołując FreezeEvents za pomocą FALSE. Gdy kontener zawiesza zdarzenia, jest zamrażanie przetwarzania zdarzeń, a nie odbieranie zdarzeń; oznacza to, że kontener może nadal odbierać zdarzenia, gdy zdarzenia są zamrożone. Jeśli kontener odbiera powiadomienie o zdarzeniu, gdy jego zdarzenia są zamrożone, kontener powinien zignorować zdarzenie. Żadna inna akcja nie jest odpowiednia.

Kontrolka powinna zanotować wywołanie kontenera w celu freezeEvents z true, jeśli ważne jest, aby kontrolować, że zdarzenie nie zostało pominięte. Podczas gdy przetwarzanie zdarzeń kontenera jest zamrożone, kontrolka powinna zaimplementować jedną z następujących technik:

  • Uruchom zdarzenia w pełnej wiedzy, że kontener nie podejmie żadnych działań.
  • Odrzuć wszystkie zdarzenia, które zostałyby wyzwolone przez kontrolkę.
  • W kolejce wszystkie oczekujące zdarzenia i uruchom je po wywołaniu kontenera FreezeEvents za pomocą FALSE.
  • Umieszczaj w kolejce tylko istotne lub ważne zdarzenia i uruchamiaj je po wywołaniu FreezeEvents za pomocą FALSE.

Każda technika jest akceptowalna i odpowiednia w różnych okolicznościach. Deweloper kontroli jest odpowiedzialny za określenie i zaimplementowanie odpowiedniej techniki dla funkcji kontrolki.