作者:
ZhengKui
下载源代码
讲解: 这是根据”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<CComSingleThreadModel>,
public CComCoClass<CCalCulate, &CLSID_CalCulate>,
public IFun
改为
class ATL_NO_VTABLE CCalCulate :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CCalCulate, &CLSID_CalCulate>,
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
分享到:
相关推荐
在这个"COM组件接口继承的实现"示例中,我们将探讨COM组件如何实现接口继承,以及它在com编程中的应用。 COM组件的接口继承是面向对象编程的一个关键特性,它使得一个组件可以实现多个接口,从而具备多种功能。接口...
在COM组件中实现多接口是一种常见的设计模式,它使得组件能够提供多种服务,满足不同的功能需求。本文将深入探讨COM组件中实现多接口的关键概念、步骤以及实际应用。 一、COM接口基础 COM接口是COM组件的核心组成...
在描述中提到的ZIP文件中,"COM的导出源程序"可能包含了实现COM接口的源代码,这通常包括接口头文件(.h)和实现文件(.cpp)。这些文件定义了COM接口的结构以及实现这些接口的类。"使用的源程序"则可能是客户端代码...
在本文中,我们将深入探讨COM组件的相关实现,包括其核心概念、组件创建、接口设计、注册与激活以及使用场景。 1. **核心概念** - **对象**: 在COM中,对象是具有特定功能的实体,它们通过接口与外界交互。 - **...
ATL是构建COM组件的强大工具,它通过预定义的模板类简化了COM接口、 coclass、事件和属性页的实现。例如,`IUnknown`接口是所有COM对象的基础,ATL提供`CComObjectRootBase`和`CComPtrBase`模板类帮助我们实现`...
在VC++中,这通常涉及到继承自`IClassFactory`接口,用于实例化和释放组件,以及实现了我们之前提到的计算接口`ICalculator`的类。实现类需要实现`QueryInterface`、`AddRef`和`Release`等COM核心方法,以确保正确地...
内容索引:VC/C++源码,系统相关,接口 本程序编译后生成DLL文件,因此就不截图了。自己做的一个关于接口的例子,主要是想实现在原有接口基础上继承新的接口,这样在保留原接口的基础上可以扩展新的功能。
在Java中,继承是单继承的,即一个类只能直接继承一个父类,但可以通过接口实现多继承的效果。继承提高了代码的复用性,使得类层次结构更加清晰。 接口与继承的关系密切。一个类可以同时实现多个接口,也可以继承一...
我们实现所有接口就是继承这个接口 6.2 IUnknown定义了三个函数 QueryInterface 接口查询函数 AddRef 增加引用计数 Release 减少引用计数 7 接口定义语言 - IDL(Interface Definition Language ) 7.1 IDL...
一旦组件接口发布,不应轻易修改,以免破坏已有的依赖。组件可以通过添加新接口来扩展服务,而不影响现有的接口使用者。 总的来说,接口是实现组件化程序设计的关键,它们促进了模块化的实现,降低了代码的耦合度,...
12. **接口继承**:学习如何通过接口继承来扩展组件的功能,以及如何处理多重继承。 通过这些实验文档,你将逐步掌握COM组件的创建、使用和调试技巧,加深对COM技术的理解,并能应用到实际项目中。每个实验文件可能...
在实现COM组件时,通常会使用 ATL (Active Template Library) 或 MFC (Microsoft Foundation Classes) 这样的库来简化工作。ATL是专门为创建高效、小型COM组件设计的,而MFC则是一个更全面的类库,提供了对COM的支持...
C++是实现COM组件的常用语言,通过COM,开发者可以创建具有标准接口的对象,这些对象可以被其他应用程序动态调用。 COM组件的聚合是指一个COM对象可以包含或“聚合”其他COM对象,形成复合对象。这在不改变外部接口...
在本文中,我们将深入探讨如何使用纯C++实现COM组件,并了解这一过程中的关键概念和技术。 COM组件是一种二进制标准,它定义了组件如何交互,包括对象的创建、接口的定义和跨进程通信。C++是一种强大的编程语言,...
在C++中,我们通常会创建一个类(例如Calculator),它继承自IUnknown,并分别实现IBaseMath和ISuperMath接口。类中的每个接口方法都会实现相应的计算逻辑。 编译后的组件会被导出为DLL(动态链接库),这样其他...
接口提供了一种多继承机制,因为Java不支持类的多继承,但一个类可以实现多个接口。 接口的实现有以下好处: - **多态性**:接口使得不同类可以共享相同的行为,允许我们使用同一接口类型的引用调用不同的实现...
2. **组件实现**:具体实现COM组件的类,这些类实现前面定义的接口,提供实际的功能。 3. **工厂类**:COM组件通常通过工厂类创建,工厂类实现了IClassFactory接口,负责实例化组件对象。 4. **注册和反注册**:源...
- IUnknown:所有COM接口都继承自IUnknown,提供AddRef、Release和QueryInterface方法,实现对象引用计数和接口获取。 2. **创建COM组件**: - 使用 ATL(Active Template Library)或者MFC(Microsoft ...
COM(Component Object Model)组件...然而,实际的COM开发可能涉及更复杂的问题,如接口继承、错误处理、性能优化等,需要深入理解和实践。在Windows编程中,熟练掌握COM技术对于构建可扩展和互操作的系统至关重要。