IViewObject2::Freeze and Unfreeze

Freeze and Unfreeze (the latter of which I've always thought should be Thaw) let the client control whether the object is allowed to change what it would render on subsequent calls to Draw. Freeze works on one aspect at a time—freezing DVASPECT_CONTENT does not freeze a call to Draw for DVASPECT_ICON. Calling Freeze returns a DWORD key, which you later pass to Unfreeze to bring the object back from the Ice Age.

Freezing a viewable object is comparable to creating a bitmap copy of the current view of the object and always using that bitmap to show the object. Underneath, the actual data might have changed, but the image does not. Because we're always using the snapshot bitmap to show the object, calls to Draw don't show any changes. The utility of frozen views is that they stabilize an object's rendering during printer banding so that multiple calls to Draw work with the same underlying view. Without freezing that view, it could change between Draw calls, and that would totally louse up any attempt at printer banding.