UNIT18组件编程技术分析.ppt

  1. 1、本文档共147页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 4.4.5 方法的实现 // str.cpp STDMETHODIMP CStr::FirstToUpper(BSTR InData, BSTR* OutData, long* result) { // TODO: 在此添加实现代码 CComBSTR strSource=InData; bool bMayUpper=true; //是否可以大写的标志 for(int i=0;istrSource.Length();i++) { if(strSource[i]=astrSource[i]=z bMayUpper ) { strSource[i]=strSource[i]-32; bMayUpper=false; } if(strSource[i]== ) bMayUpper=true; } *OutData = SysAllocString(strSource); return *result; } * 4.4.6 ATL中的字符串数据类型 由于COM组件是跨平台与开发语言的,利用ATL开发出来的组件在VB等别的开发工具下也可以使用。ATL中使用的是C++语言,别的开发工具所使用的语言和C++的数据类型是有区别的,那么在不同的语言之间如何进行数据的交换呢? 这要靠组件接口中提供的多语言通用类型的数据类型,规定通用类型也是COM组件的一个组成部分。 * 4.4.6 ATL中的字符串数据类型 BSTR : 用COM技术来设计组件以及构件系统时,字符串常用BSTR来表示。BSTR是BASIC String的简称,常用于BASIC的编程中。该类型是包含长度前缀的,以0结束的字符串,长度前缀表示该字符串所包含的字节数。 COM提供了一些API函数来管理BSTR。如SysAllocString()(创建并初始化一个字符串),SysAllocStringLen()(创建一个指定长度的字符串),SysFreeString()(释放一个字符串),SysReAllocString()(改变字符串的长度),SysStringLen()(返回字符串的长度)等。 在VC客户端一般调用SysAllocString()创建字符串,以[In]参数方式传递给组件中的方法,调用完成后用SysFreeString()来释放字符串的缓冲区。 BSTR str= SysAllocString(”are you ready?”); HRESULT hr=p-FirstToUpper(str); SysFreeString(str); * 4.4.6 ATL中的字符串数据类型 CComBSTR CComBSTR是ATL封装的一个来使用BSTR数据类型的类,如果把BSTR看作各种语言都可以使用的共同数据类型的话,那么CComBSTR则就是在C++下操纵COM中的一个数据类型。 CComBSTR类中有一些重要的函数,如Append()(增加一个字符串),AppendBSTR()(增加一个BSTR字符串),Copy()(返回成员变量m_str的值),Empty()(释放成员变量m_str的值),Length()(返回BSTR的长度)等。 * 4.4.7 编译IDL并注册COM组件 IDL简介 COM接口通常用“接口定义语言”IDL来定义,IDL是一种类似于C++的语言,前一节设计了一个MyCom组件,其接口MyCom.idl: 编译IDL:上述Mycom.idl文件我们并未编写,这完全归功于ATL工具,是它帮助我们自动完成了IDL接口文件。前面在给组件中添加方法的过程中,向导自动完成了IDL文件。 切换到“解决方案资源管理器”中,在MyCom.idl文件上右键单击鼠标,选择“编译”,于是在磁盘上生成了接口定义文件对应的二进制文件Mycom.tlb。该文件中含有接口中所定义的方法的记录,定义了组件的虚函数指针表。.tlb可以看作是二进制的接口定义语言。 * 4.4.7 编译IDL并注册COM组件 设置项目属性为“Release” 编译并链接ATL项目Mycom 你会在项目的Release目录中发现两个文件: Mycom.tlb Mycom.dll * 4.4.7 编译IDL并注册COM组件 接口定义文件对应的二进制文件Mycom.tlb。该文件中含有接口中所定义的方法的记录,定义了组件的虚函数指针表。.tlb可以看作是二进制的接口定义语言 * 4.4.7 编译IDL并注册COM组件 注册MyCom.dll: 要想让用户能够“透明”地使用创建的组件,首先必须将该组件注册。VC编译器将

文档评论(0)

美洲行 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档