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