COM 组件设计与应用(18)—属性包.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
COM组件设计与应用(十八)——属性包 一、前言   书接 HYPERLINK /document/viewdoc/?id=1546 \t _blank 上回,本回着落在介绍属性包 IPersistPropertyBag 接口的实现方法和调用方式。属性包,是以“名称 - 值”的方式提供组件持续性的支持,而“名称 - 值”恰恰又适合于用文本方式来表现。下面的片段是在 HTML 中插入 Microsoft MonthView Control ActiveX 控件后的样式: object classid=clsid:232E456A-87C3-11D1-8BE3-0000F param name=_ExtentX value=9393 param name=_ExtentY value=4974 param name=_Version value=393216 param name=ForeColor value=0 param name=MaxSelCount value=7 param name=MonthColumns value=1 param name=CurrentDate value=38632 param name=MaxDate value=2958465 param name=MinDate value=-53688 /object 以文本方式保存组件属性,比较直观、容易修改,上面 HTML 示例中的 param name=属性名 value=值 就很清晰。下面开始介绍如何在组件中实现 IPersistPropertyBag 接口。 二、组件的实现 (1)vc6.0 开发步骤 1、建立一个工作空间(WorkSpace)。 2、在这个工作空间中,建立 ATL 工程,示例程序工程为 Simple18。 3、增加 ATL 对象类,默认全部选项。示例程序中的 ATL 对象短名称是 Property。 4、增加一些属性。在以前的章回中,我们只介绍了增加接口函数的方法,由于今天是首次增加接口属性,所以稍微细致一些。步骤是,在ClassView卡片中选择接口(IProperty)后,执行鼠标右键菜单Add Property... 5、增加 BSTR 类型的接口属性 str,同样的方式,再增加一个 long 型的接口属性 interger。在示例程序中,这两个属性其实只为演示,并没有实际的意义。 6、接口中的属性,多数情况下会对应对象内部的一个成员变量,因此我们现在要添加成员变量。选择对象类名,执行鼠标右键菜单Add Member Variable.... 7、添加两个成员变量,一个是 CComBSTR m_str 对应于接口属性 str;另一个是 long m_integer 对应于接口属性 integer。 (2) 开发步骤 1、建立一个空白解决方案。 2、在解决方案中,新增 ATL 项目。示例程序中项目名称叫 Simple18, 注意不要选择“属性化编程”方式。 3、添加 ATL 类。选择 “ATL 的简单对象”。默认全部选项。示例程序中 ATL 类短名称为 Property,类名称为 CMyProperty。(注1) 4、 增加一些属性。在以前的章回中,我们只介绍了增加接口函数的方法,由于今天是首次增加接口属性,所以稍微细致一些。步骤是,在类视图卡片中选择接口(IProperty)后,执行鼠标右键菜单添加属性... 5、增加 BSTR 类型的接口属性 str,同样的方式,再增加一个 long 型的接口属性 interger。在示例程序中,这两个属性其实只为演示,并没有实际的意义。 6、接口中的属性,多数情况下会对应对象内部的一个成员变量,因此我们现在要添加成员变量。选择对象类名,执行鼠标右键菜单添加变量.... 7、添加两个成员变量,一个是 CComBSTR m_str 对应于接口属性 str;另一个是 long m_integer 对应于接口属性 integer。 (3)实现代码   至此,我们组件的框架已经完成,下面该完成函数函数的实现了: STDMETHODIMP Cxxx::get_str(BSTR* pVal) { *pVal = m_str.Copy(); return S_OK; } STDMETHODIMP Cxxx::put_str(BSTR newVal) { m_str = newVal; return S_OK; } STDMETHODIMP Cxxx::get_integer(LONG* pVal) { *pVal = m_integer; return S_OK; } STDMETHODIMP Cxxx::put_

文档评论(0)

果冻宝盒535888 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档