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控件。
StgCreateDocfileOnILockBytes复合文档的更多相关文章
- Atitit.复合文档的格式 标准化格式
Atitit.复合文档的格式 标准化格式 1. Docfile1 2. Iso Cdf cd file1 3. Zip1 4. Ooxml1 5. Odf :OpenDocument Form ...
- 复合文档的二进制存储格式研究[ole存储结构](word,xls,ppt...)[转]
复合文档文件格式研究 前 言 复合文档(Compound Document) 是一种不仅包含文本而且包括图形.电子表格数据.声音.视频图象以及其它信息的文档.可以把复合文档想象成一个所有者,它装着 ...
- 复合文档(Compound Document)读写栗子
复合文件是把磁盘文件系统的管理方式移植到文件中---复合文件. 复合文档是由 Windows 系统通过 COM 提供的, 它能完成像 Windows 目录结构一样复杂的文件结构的存取:提示一下 Win ...
- VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)
VS2010/MFC编程入门之二(利用MFC向导生成单文档应用程序框架)-软件开发-鸡啄米 http://www.jizhuomi.com/software/141.html 上一讲中讲了VS20 ...
- ActiveX、OLE和COM的关系(转自百度文档)
比较流行的组件模型有COM(Component Object Model,对象组件模型)/DCOM(Distributed COM,分布式对象组件模型)和CORBA(Common Object Req ...
- java操作office和pdf文件java读取word,excel和pdf文档内容
在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...
- HSSF与XSSF导出excel文档
Apache POI Apache POI 是用Java编写的免费开源的跨平台的 Java API,它可以创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文 ...
- VBA Dumper v0.1.4.2, 提取office文档中的VBA代码,监查宏病毒恢复代码(演示版
http://club.excelhome.net/thread-970051-1-1.html VBA Dumper 0.1.4.2更新,填补国内同类程序空白 此程序为演示版,可以在无office的 ...
- MFC用串行化实现文档存储和读取功能
在面向对象的程序设计中,一般都是用二进制文件来保存文档资料.在VC++中控制和使用文件流的方法很多,MFC程序设计中常用的有两种方法:用CFile对象存储和读取文件:利用串行化存取文件.其中用CFil ...
随机推荐
- [.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式
[.net 面向对象编程基础] (6) 基础中的基础——运算符和表达式 说起C#运算符和表达式,小伙伴们肯定以为很简单,其实要用好表达式,不是一件容易的事.一个好的表达式可以让你做事半功倍的效果,比如 ...
- Ehcache BigMemory: 摆脱GC困扰
问题 使用java开源项目经常需要调优jvm,以优化gc.对于gc,如果对象都是短时对象,那么jvm相对容易优化,假如碰上像solr使用自带java cache的项目,那么gc严重受限于cache,因 ...
- [51单片机] 以PWM控制直流电机为例建一个简单的51工程框架
目录 1)功能概述 2)引脚连接 3)框架介绍 4)模块说明 5)复用规则 6)工程链接 1)功能概述 名称:独立按键控制直流电机调速 内容:对应的电机接口需用杜邦线连接到uln2003电机控制端; ...
- mac安装redis
1.到官网下载最新的redis. http://redis.io/download 2.将下载下来的tar.gz 压缩包,(在/Users/***/Downloads)拷贝到usr/local目录下 ...
- Senparc.Weixin.MP SDK 微信公众平台开发教程(三):微信公众平台开发验证
要对接微信公众平台的"开发模式",即对接到自己的网站程序,必须在注册成功之后(见Senparc.Weixin.MP SDK 微信公众平台开发教程(一):微信公众平台注册),等待官方 ...
- Amazon Dynamo论文学习
Dynamo是一个key-value数据存储系统,去中心化.高可扩展.高可用,使用一致性哈希来分区和备份数据,使用数据版本化来实现一致性. 核心技术 CAP:一致性.可用性.扩展性 一致性哈希:切分数 ...
- MVVM架构~前台后台分离的思想与实践
返回目录 MVVM是一种架构思想,是一种解决问题的方式,对于一个项目,一个功能模块,你可以选择使用MVVM的架构来实现,而knockoutjs只是实现MVVM的一种工具,它是在前端实现的,这一点,我们 ...
- D3.js 学习( 一)
<html> <head> <meta charset="utf-8"> <title>第三课:为柱形图添加坐标轴</titl ...
- 学习ASP.NET MVC(四)——我的第一个ASP.NET MVC 实体对象
今天我将根据数据库中的表结构添加一些类.这些类将成为这个ASP.NET MVC应用程序中“模型”的一部分. 我们使用Entity Framework(实体框架)来定义和使用这些模型类,并且 ...
- 查看SSIS Package 部署的历史记录
1,通过Integration Services Catalogs来查看 打开SSISDB->Projects,查看指定project的version history,这种方式查看Deploye ...