




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
动态数据交换管理库的基本概念动态数据交换管理库的基本概念 1 客户和服务的交互过程 客户和服务的交互过程 DDE 总是发生在客户应用程序和服务应用程序之间 DDE 客户应用程序通过建立和服务程序的会话 来发送事务 transaction 来实现数据交换 一个事务是对数据或服务的请求 DDE 服务应用程序通过提 供数据或服务来响应客户程序的请求 一个服务程序同时可以和多个客户程序建立会话 一个客户程序也 能同时从多个服务程序中获取数据 一个应用程序即可以是客户程序 也可以是服务程序 客户或者服务 程序都可以在任意时刻结束已经建立的会话 2 事务 事务 Transaction 和 和 DDE 回调函数 回调函数 DDEML 通过发送事务给应用程序的 DDE 回调函数来通知应用程序相应的活动 一个 DDE 事务同一 个消息很相似 事务是一个带有关于该事务附加信息参数的命名参数 DDEML 会传递一个事务给一个由 应用程序定义的 DDE 回调函数 该函数会执行相应的操作 例如 一个客户应用程序试图用 DdeConnect 函数来同一个服务应用程序建立一个会话 该函数会使 DDEML 发送一个 XTYP CONNECT 事务给服务应 用程序的 DDE 回调函数 该回调函数可以通过返回 TRUE 给 DDEML 来允许建立该会话 或者返回 FALSE 来拒绝 3 服务名 主题名和事务名 服务名 主题名和事务名 DDE 服务器使用三层结构 服务名 主题名和数据项名 来唯一地标识一个在会话中被交换地数据 单元 服务名服务名是一个在客户程序试图同服务器建立会话时服务应用程序用来响应的字符串 为了同服务器 建立会话 客户程序必须指定服务名 虽然一个服务器可以响应多个服务名 但是大多数服务器一般只响 应一个服务名 主题名主题名是一个用来标识逻辑数据上下文的字符串 对于那些操作基于文件处理的服务器 主题名通常是文件名 其它的则是由应用程序指定的字符串 除了服务名 一个客户程序如果试图建立一 个会话 则必须指定主题名 数据项名数据项名是一个用来标识服务器传递给客户程序的数据单元的字符串 4 系统主题 系统主题 系统主题提供了一个让任何 DDE 客户程序得到感兴趣信息的上下文 建议服务应用程序总是支持系 统主题 在 DDEML H 头文件中 系统主题被定义为 SZDDESYS TOPIC 为了确定存在哪个服务器以及服 务器所提供的信息类型 客户程序可以在启动时 通过设置设备名为 NULL 来请求一个关于系统主题的会 话 一个服务器必须支持下面的系统主题 SZDDE ITEM ITEMLIST SZDDESYS ITEM FORMATS SZDDESYS ITEM HELP SZDDESYS ITEM RT NMSG SZDDESYS ITEM STATUS SZDDESYS ITEM SYSITEMS 和 SZDDESYS ITEM TOPICS 这些数 据项名定义在 DDEML H 头文件中 为了获得这些字符串的字符串句柄 应用程序必须使用 DDEML 的字 符串管理函数 5 建立建立 在调用其它 DDEML 函数前 应用程序必须调用 DdeInitialize 函数 DdeInitialize 函数获取应用程序 的实例标识符 注册应用程序的 DDE 回调函数 并为回调函数指定事务过滤 每个应用程序实例或动态 链接库必须将它的实例标识符作为 IdInst 参数传到那些相应的 DDEML 函数中 多 DDEML 实例的目的是 为了支持那些 DDEML 和应用程序同时都需要使用的 DLL 文件 一个应用程序不能使用多于一个的 DDEML 的实例 事务过滤通过阻止 DDEML 传递不需要的事务给应用程序的 DDE 回调函数来优化系统性能 应用程序通过 在调用 DdeInitialize 函数时设置 ufCmd 参数来允许事务过滤 应用程序必须为不在回调函数中处理的每 类事务指定一个事务过滤标志 应用程序可以通过调用 DdeInitialize 重新设置事务过滤 当不再需要使用 DDEML 时 应用程序必须调用 DdeUninitialize 函数 该函数会结束任何打开的会话 并且释放系统分配 给应用程序的 DDEML 资源 6 回调函数回调函数 每个使用 DDEML 的应用程序必须使用回调函数来处理 DDE 事件 DDEML 通过将事务传递给应用程 序的 DDE 回调函数来通知应用程序有关的事件 回调函数接收何种事务由所设置的过滤标志 应用程序 是否时客户 服务或两者皆是来决定 DDE 回调函数的函数原形如下 HDDEDATA CALLBACK DdeCallback uType uFmt hconv hsz1 hsz2 hdata dwData1 dwData2 UINT uType transaction type UINT uFmt clipboard data format HCONV hconv handle to conversation HSZ hsz1 handle to string HSZ hsz2 handle to string HDDEDATA hdata handle to global memory object DWORD dwData1 transaction specific data DWORD dwData2 transaction specific data switch uType case XTYP REGISTER case XTYP UNREGISTER return HDDEDATA NULL case XTYP ADVDATA return HDDEDATA DDE FACK case XTYP XACT COMPLETE return HDDEDATA NULL case XTYP DISCONNECT return HDDEDATA NULL default return HDDEDATA NULL 7 字符串管理 字符串管理 为了执行某个 DDE 任务 许多 DDEML 函数需要获得字符串的访问权 例如 一个客户程序在调用 DdeConnect 函数来请求同服务器建立会话时 必须指定服务名和主题名 在 DDEML 函数中 应用程序 通过传递字符串句柄而不是指针来指定一个字符串 字符串句柄是一个 DWORD 值 由系统分配 用来标 识一个字符串 应用程序可以通过调用 DdeCreateStringHandle 函数来获取特定字符串的字符串句柄 该 函数在系统中注册一个字符串 并且返回给应用程序一个字符串句柄 应用程序可以将该句柄传入那些必 须访问字符串的 DDEML 函数中 下面示例解释了这点 HSZ hszServName HSZ hszSysTopic hszServName DdeCreateStringHandle idInst MyServer CP WINANSI hszSysTopic DdeCreateStringHandle idInst SZDDESYS TOPIC CP WINANSI 一个应用程序的 DDE 回调函数在大多 DDE 事务中接收多个字符串句柄 比如 在 XTYP REQUEST 事务 处理期间 一个服务器接收两个字符串句柄 一个标识主题名字符串 另一个标识数据项名字符串 应用 程序可以通过调用 DdeQueryString 函数来获取相应于字符串句柄的字符串长度 并且复制字符串到应用 程序定义的 buffer 中 如下所示 DWORD idInst DWORD cb HSZ hszServ PSTR pszServName cb DdeQueryString idInst hszServ LPSTR NULL 0 CP WINANSI 1 pszServName PSTR LocalAlloc LPTR UINT cb DdeQueryString idInst hszServ pszServName cb CP WINANSI 一个特定于实例的字符串句柄不能在字符串和相应字符串之间相互映射 用 DdeCmpStringHandles 函数来比较两个字符串句柄的值 当一个字符串句柄被传进回调函数后 如果回调函数返回后该句柄将失效 应用程序可以通过 DdeKeepStringHandle 函数来保存字符串句柄以备在回调函数返回后使用该句柄 当应用程序调用了 DdeCreateStringHandle 函数后 系统会将指定的字符串放入字符串表 同时产生一个 用来访问字符串的句柄 系统会为字符串表中的每个字符串维护一个引用计数 当一个应用程序调用 DdeCreateStringHandle 函数 并且指定已经存在于字符串表中的字符串 系统会增 加引用计数 而不是增加相同的字符串 当应用程序调用了 DdeFreeStringHandle 函数后 系统会减少引 用计数 当字符串表中的字符串引用计数为 0 时就被删除 DDEML 字
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 如何推动农业科技与产业融合发展
- 小区停车管理规定解析
- 化学品生产工艺技术规定
- 2025浙江金华市武义县司法局招聘4人笔试含答案
- 如何让绿植更好抵御寒冬
- 职业教育学习规范
- 心肌酶检测方法
- 2025西安国际港务区陆港第七小学招聘笔试含答案
- 2025年碳资产管理师考试题库(附答案和详细解析)
- 2025年事业单位工勤技能-广东-广东计算机信息处理员三级高级历年参考题库含答案解析
- 感染性腹泻病例演示文档
- 涂塑钢管焊接施工方案
- DB21-T 4079-2024 畜禽养殖场污水贮存设施建设规范
- 地产楼盘售卖合同范例
- 诚信培训教育课件
- 人教版八年级上册历史的知识点
- 马凡氏综合征课件
- 中国共产主义青年团团章
- 《信息技术基础》高职全套教学课件
- 《 人体解剖学 》课程标准-康复治疗技术等专业(2022年修改)
- 格构柱、杯形基础钢结构工程施工组织设计
评论
0/150
提交评论