Event
Freezing
A container
can notify a control that it is not ready to respond to events by calling IOleControl::FreezeEvents(TRUE).
It can un-freeze the events by calling IOleControl::FreezeEvents(FALSE).
When a container freezes events, it is freezing event processing, not event
receiving; that is, a container can still receive events while events are
frozen. If a container receives an event notification while its events are frozen,
the container should ignore the event. No other action is appropriate.
A control
should take note of a container s call to IOleControl::FreezeEvents(TRUE)
if it is important to the control that an event is not missed. While a
container s event processing is frozen, a control should implement one of the
following techniques:
1. Fire the events in the full knowledge that the
container will take no action.
2. Discard all events that the control would have
fired.
3. Queue up all pending events and fire them
after the container has called IOleControl::FreezeEvents(FALSE).
4. Queue up only relevant or important events and
fire them after the container has called IOleControl::FreezeEvents(FALSE).
Each
technique is acceptable and appropriate in different circumstances. The control
developer is responsible for determining and implementing the appropriate
technique for the control s functionality.