OLE Document Objects
OLE文档对象来源自OLE2.0标准,并演化而来。
OLE1.0时候,嵌入的文档如果显示,必须谈出一个新窗口,然后内嵌文档显示在新窗口中。
OLE2.0时候,嵌入的文档可以显示在Container中,但是内嵌文档和Container的交互性很差。Container可以控制内嵌文档,但内嵌文档不能控制Container。
OLE Document Objects解决了上述问题,是用户感觉不到内嵌文档的存在。
How Everything Works Together
1.Initialization
Container调用OLE Document Object的IOleObject::DoVerb()
Server Application会调用Container提供的IOleDocumentSite::ActivateMe()
对于Container又会通过IOleDocumentSite::ActivateMe()调用IUnknown::QueryInterface,得到IOleDocument接口。
3.Enumerating Views
Container实现
IOleClientSite接口和IOleInPlaceSite接口
Container嵌入OLE Document Objects过程
先得到一个IOleObject的接口,然后调用IOleObject::SetClientSite。