StgCreateDocfileOnILockBytes复合文档

StgCreateDocfileOnILockBytes







    最近一直在研究有关CRichEditCtrl的ole技术 CRichEditCtrl 的ole技术

     ------------ IRichEditOle ---------------------------

    如需向CRichEditCtrl里面插入Ole对象,

    需要调用GetIRichEditOle 获得此CRichEditCtrl的IRichEditOle接口

    如果不使用MFC则调用windows SDK 的 SendMessage 发送EM_GETOLEINTERFACE消息能获得同样的效果。 

    IRichEditOle接口是特别设计用于访问CRichEditCtrl object 的 OLE 功能,执行ole相干的操作。

    接口下面几个重要的方法

    InsertObject:插入一个对象到CRichEditCtrl

    GetObject:返回一个CRichEditCtrl里面的REOBJECT对象

    ImportDataObject: 导入一个剪切板对象并替换当前选中内容

    GetClientSite:返回IOleClientSite接口用于创建新的对象。

    GetClipboardData:返回一个Clipboard对象。 

     ------------ IOleClientSite ---------------------------

    如果需要往ole容器内嵌入一个嵌入对象(embedded object )则可以利用这个接口获取嵌入对象在容器内的定位信息,和嵌入对象的别名(moniker),显示的范围,

    和用户界面以及容器提供的其他信息。被嵌入的对象必须通过调用IOleClientSite来获得

    容器所提供的服务。容器会对每个它包含的复合文档(compound-document)提供一个IOleClientSite实例.

     

    IOleClientSite接口提过如下比较常用的借口:

    SaveObject:当用户更新或退出时,嵌入对象通过此方法请求容器把嵌入对象保存到persistent storage,此调用是同步的。

    GetMoniker:请求对象的moniker.容器用此Moniker来维持与object的联系。

    GetContainer:返回一个指向对象的容器的指针,利用这个指针可以遍历容器里的所有object。

    ShowObject:请求容器显示对象。

    OnShowWindow:通知容器当对象变的可见或不可见。

    RequestNewObjectLayout:请求容器改变对象显示的位置。 

     ------------ REOBJECT ---------------------------

    上面提及的object我们可以用REOBJECT来进行描述,具体定义如下:

    REOBJECT结构体包含一个对象的下列信息:

    cbStruct  - Structure size, in bytes. 

    cp        - Character position of the object. 

    clsid     - 对象的类标示符. 

    poleobj   - 指向IOleObject interface的实例的指针. 

    pstg  - 指向IStorage interface的实例的指针. This is the storage object associated with the object. 

    polesite  - 指向IOleClientSite interface的实例的指针. This is the object's client site in the rich edit control. 这个值必须通过IRichEditOle::GetClientSite方法来获得. 

    sizel  - A SIZEL structure specifying the size of the object. A 0, 0 on insertion indicates that an object is free to determine its size until the modify flag is turned off. 

    dvaspect  - 显示方面的使用. See DVASPECT for an explanation of possible values. 

    dwFlags   - 标示是否对象是打开状态,是是允许改变大小,是否当前是选中状态. 

    dwUser    - 为用户保留的用于定义用户自己的数据. 

     ------------ IOleObject ---------------------------

    在REOBJECT里忙有个指向IOleObject的指针poleobj,下面来分析

    其实IOleObject接口定义了一系列的方法,这些方法允许数据传输,和数据更改通知,这些用于数据传输的方法利用 STGMEDIUM 来指定数据格式FORMATETC。这些数据可以提供给特定的目标设备(target device),

    IOleObject还管理所有的与对象的连接用于通知数据的改变。

     

     

    以上提及的“容器”指的就是CRichEditCtrl控件。

    • 0
      点赞
    • 2
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值