zoukankan      html  css  js  c++  java
  • StgCreateDocfileOnILockBytes复合文档

     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控件。

  • 相关阅读:
    【Android
    【数据结构】之队列(C语言描述)
    【数据结构】之顺序表和链表的比较
    TCP/IP协议、HTTP协议、SOCKET通讯详解
    Socket通信原理简介
    TCP/IP及内核参数优化调优
    谈应用环境下的TIME_WAIT和CLOSE_WAIT[转]
    HTTP 499 状态码 nginx下 499错误[转]
    [转]提高mysql千万级大数据SQL查询优化30条经验(Mysql索引优化注意)
    千万级的数据量查询方案
  • 原文地址:https://www.cnblogs.com/endv/p/6165058.html
Copyright © 2011-2022 走看看