事件凍結
容器可以透過使用 TRUE 呼叫 IOleControl::FreezeEvents,通知控件它尚未準備好回應事件。 它可以使用 FALSE 呼叫 FreezeEvents 來解除事件凍結。 當容器凍結事件時,它會凍結事件處理,而不是事件接收;也就是說,容器仍然可以在事件凍結時接收事件。 如果容器在其事件凍結時收到事件通知,容器應該忽略事件。 沒有其他動作是適當的。
如果控件對控件不遺漏事件很重要,則控件應該注意容器對FreezeEvents的呼叫,如果控件沒有遺漏事件。 當容器的事件處理凍結時,控件應該實作下列其中一種技術:
- 在完全瞭解容器不會採取任何動作時引發事件。
- 捨棄控件會引發的所有事件。
- 將所有擱置的事件排入佇列,並在容器呼叫 FreezeEvents 後引發它們,並搭配 FALSE。
- 只排入相關或重要事件佇列,並在容器呼叫 FreezeEvents 後引發它們,並搭配 FALSE。
每種技術在不同情況下都是可以接受且適當的。 控件開發人員負責判斷及實作控件功能的適當技術。