网站大量收购闲置独家精品文档,联系QQ:2885784924

31数据变化通报机制.-Read.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
31数据变化通报机制.-Read.ppt

十五 统一数据传输 数据格式 数据对象和IDataObject接口 通报连接机制 数据变化通报机制. 数据变化通知的实现方式 通过剪贴板传输数据 MFC对数据对象的支持 1 数据格式 COM提供了UDT(Uniform Data Transfer)作为应用系统之间的数据交换方案。 COM之前的数据传输:剪贴板, DDE 局限性: 1。数据格式限制。只能使用预定义的几种格式 2。被传输的数据只能位于全局内存中。 3。没有双向通讯机制。 4。数据格式与传输协议相关。 COM使用数据对象作为数据实体,数据对象通过IDataObject接口暴露其内部信息。数据的传递变成了数据对象的创建和接口指针的传递。 (永久对象,数据对象,都是COM对象,都有状态.) UDT 定义了两个数据结构FORMATETC 和STGMEDIUM分别描述数据格式和存储介质以适应广泛的数据类型和存储介质。且提供了双向通讯机制。 数据对象可以称为应用之间交换信息的标准。数据对象的IDataObject接口指针。统一的方式访问、操作。 数据对象的操作过程频繁地使用了如下的两个数据结构: typedef struct tagFORMATETC { CLIPFORMAT cfFormat; DVTARGETDEVICE *ptd; DWORD dwAspect; LONG lindex; DWORD tymed; }FORMATETC 1。CLIPFORMAT cfFormat; 数据格式。预定义的数据格式. UINT RegisterClipboardFormat( LPCTSTR lpszFormat // name of new format ); 可以创建新的数据格式。 2。ptd指向DVTARGETDEVICE数据结构 typedef struct tagDVTARGETDEVICE { DWORD tdSize; //结构长度 WORD tdDriverNameOffset; // 设备驱动名 WORD tdDeviceNameOffset;// 设备名 WORD tdPortNameOffset; // 端口名 WORD tdExtDevmodeOffset; // DEVMODE结构 BYTE tdData[ 1 ]; } DVTARGETDEVICE; 3。dwAspect 是一个枚举,指定图形数据的显示方式 enum tagDVASPECT { DVASPECT_CONTENT = 1, DVASPECT_THUMBNAIL = 2, DVASPECT_ICON = 4, DVASPECT_DOCPRINT = 8 } DVASPECT; 4。lindex为dwAspect的补充。 5。tymed指定存储介质。可以指定全局内存、磁盘文件、或者存储对象等。 另一个常用的结构如下: typedef struct tagSTGMEDIUM { DWORD tymed; union { HBITMAP hBitmap; HMETAFILEPICT hMetaFilePict; HENHMETAFILE hEnhMetaFile; HGLOBAL hGlobal; LPOLESTR lpszFileName; IStream *pstm; IStorage *pstg; } u; IUnknown *pUnkForRelease; }STGMEDIUM; 1。其中tymed指明介质的类型。 typedef enum tagTYMED { TYMED_HGLOBAL = 1, TYMED_FILE = 2, TYMED_ISTREAM = 4, TYMED_ISTORAGE = 8, TYMED_GDI = 16, TYMED_MFPICT = 32, TYMED_ENHMF = 64, TYMED_NULL = 0 } TYMED; 2。联合成员u指明数据的真正位置,根据tymed的值使用相应的联合成员。 3。pUnkownForRelease用来控制数据的释放过程。 应用程序可以选择合适的存储介质来传输数据。 这两个数据结构用于数据对象的各种操作之中. 2 数据对象和IDataObject接口 数据对象是一个COM对象,它实现了IDataObject接口。一旦应用程序创建了一个数据对象,此对象可以通过任一种传输协议传递

文档评论(0)

wendang_1 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档