CT() BEGIN_COM_MAP(CMathe) // 接口入口表。这里填写的接口,才能被QueryInterface()找到 COM_INTERFACE_ENTRY(IMathe) COM_INTERFACE_ENTRY(IStr) END_COM_MAP() 3-5、好了,一切就绪。接下来,就可以在 IStr 接口中增加函数了。示例程序中增加一个字符串连接功能的函数:
HRESULT Cat([in] BSTR s1, [in] BSTR s2, [out,retval] BSTR *psVal); 如果你不知道如何做,请重新阅读前三回的内容。
四、接口升级
我们这个组件已经发行了,但忽然一天我们需要在 IMathe 接口上再增加一个函数......不行!
绝对不能在 IMathe 上直接修改!怎么办?解决方法是------再增加一个接口,我们就叫 IMathe2 吧,
如果以后还要增加函数,那么我们再增加一个接口叫 IMathe3......子子孙孙,无穷尽也。
4-1、修改 IDL 文件,其实如果你理解了上面一小节的内容,再增加一个接口是很简单的事情了。
import "oaidl.idl"; import "ocidl.idl"; [ object, uuid(072EA6CA-7D08-4E7E-B2B7-B2FB0B875595), helpstring("IMathe Interface"), pointer_default(unique) ] interface IMathe : IUnknown { [helpstring("method Add")] HRESULT Add([in] long n1, [in] long n2, [out,retval] long *pnVal); }; [ object, uuid(072EA6CB-7D08-4E7E-B2B7-B2FB0B875595), helpstring("IStr Interface"), pointer_default(unique) ] interface IStr : IUnknown { [helpstring("method Cat")] HRESULT Cat([in] BSTR s1, [in] BSTR s2, [out,retval] BSTR *psVal); }; [ object, uuid(072EA6CC-7D08-4E7E-B2B
|