网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > C/C++
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.这些样式表,你都用过么?.
.C++数据结构学习:事件驱动模拟.
.C++内联函数(Inline)介绍.
.面向对象思想的精辟论述.
.C BUILDER中相关流对象的讨论.
.C++代码优化方法(1).
.通过键盘操作的,想进行c图形化编.
.联网调试CGI程序心得.
.在DOS下使用Windows *.WAV 文件.
.链表的c语言实现(十).
.C语言嵌入式系统编程修炼之背景篇.
.穷举算法解题的一般思路.
.C++的救赎 C++开源程序库评话.
.如何给Table减肥.
.用汇编写系统服务程序.
.创建和使用库:静态、共享和动态.
.有趣的分形学Mandlbrot集图形的一.
.More Effective C++:通过引用捕.
.VC++下使用ADO编写数据库程序(1).
.大教堂和市集.

COM组件接口继承的实现

发表日期:2008-3-8



  这是根据”Dr. GUI and ATL” 的文章自己做的例子程序,主要是在原有接口上继续新的接口,这样在保留原接口的基础上可以扩展新的功能.  

  功能介绍:  

  1.创建Calculate组件,添加IFun接口(注重:本例我们在Attributes中我们选择Apartment,Custom,Yes).在IFun接口中添加函数Add实现两数相加的功能(参数为[in] long n1, [in] long n2, [out, retval] long *pVal).代码如下:  

  STDMETHODIMP CCalCulate::Add(long n1, long n2, long *pVal)

  {

   // TODO: Add your implementation code here

   *pVal = n1 + n2;

   return S_OK;

  }

  2.添加IFun2接口,继续IFun接口.步骤如下:

  (1)修改.idl文件:

  在

  interface IFun : IUnknown

  {

   [helpstring("method Add")] HRESULT Add([in] long n1, [in] long n2, [out, retval] long *pVal);

  };

  下添加代码:

  [

   object,

   uuid(B9D75722-1950-405b-8BB6-9788A6DB1DB2), //是接口IFun2的标志数,可由VS的GUIDGEN.exe产生

   helpstring("IFun2 Interface"),

   pointer_default(unique)

  ]

  interface IFun2 : IFun

  {

  };

  同时将末尾coclass CalCulate函数改为

  coclass CalCulate

  {

   interface IFun;

   [default] interface IFun2;

  };

  (2) 修改CalCulate.h文件

  将

  class ATL_NO_VTABLE CCalCulate :

  public CComObjectRootEx,

   public CComCoClass,

   public IFun  

  改为

  class ATL_NO_VTABLE CCalCulate :

  public CComObjectRootEx,

   public CComCoClass,

   public IFun2

  在

  BEGIN_COM_MAP(CCalCulate)

   COM_INTERFACE_ENTRY(IFun)

  END_COM_MAP()

  中添加

  COM_INTERFACE_ENTRY(IFun2)

  (3) 在IFun2接口中添加Sub函数,方法同添加Add函数不再重复,只是实现时改为

  *pVal = n1 - n2; // 返回两数差.

  (4) 编写客户端代码,调用IFun2接口的Add和Sub函数.  

  开发环境: VC6 windows 2000/XP

  测试环境:Windows 2000 WindowsXP
上一篇:C++箴言:谨慎使用模板元编程 人气:549
下一篇:C++箴言:理解 new-handler的行为 人气:416
浏览全部C/C++的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐