- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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_
您可能关注的文档
最近下载
- 理解当代中国 英语读写教程Unit 5 英语读写教程课件.pptx VIP
- 名校课堂八上物理电子版不带答案.doc VIP
- 2025年试题国家保安员资格考试试题+答案.docx VIP
- 2024年版羽毛球馆租赁协议样本.docx VIP
- 要素式起诉状(机动车交通事故责任纠纷).doc VIP
- 焙烧炉天然气燃烧自动控制系统的研究与应用.docx VIP
- 2019-2020学年上海市市东中学高三政治测试题.docx VIP
- 上海市市东中学2023年高二物理联考试题含解析.docx VIP
- 上海市市东中学2022年高二地理月考试题含解析.docx VIP
- 上海市市东中学高二化学上学期期末试卷含解析.docx VIP
原创力文档


文档评论(0)