COM 组件设计与应用(十五)——连接点(vc6.0)
2006-07-22 22:55:35 来源:WEB开发网核心提示: 示例程序中的第2个组件(MultConnect),我们再增加一个连接点( _IDispConnectEvents2 ),COM 组件设计与应用(十五)——连接点(vc6.0)(5),这个接口对象负责完成一个时钟,每间隔一定的毫秒就向调用者发出“时钟事件”,在示例中,
示例程序中的第2个组件(MultConnect),我们再增加一个连接点( _IDispConnectEvents2 )。这个接口对象负责完成一个时钟,每间隔一定的毫秒就向调用者发出“时钟事件”。增加第二个连接点的方法是要手工修改 IDL 文件
......
library MULTCONNECTLib
{
importlib("stdole32.tlb");
importlib("stdole2.tlb");
...... // 第一个,ATL 框架默认给我们生成的连接点接口描述
[ // 需要手工增加第二个或更多个连接点
uuid(F81DB93F-4F63-4A55-8114-A32BC78466D3), // CLSID 可以用 GUIDGEN.EXE 来产生
helpstring("_IDispConnectEvents2 Interface")
]
dispinterface _IDispConnectEvents2
{
properties:
methods:
};
[
uuid(9461BE82-0D64-4E3B-B0DB-2306D1BFE3F0), // 这是示例程序的类型库ID,肯定和你生成的不一样的啦
helpstring("DispConnect Class")
]
coclass DispConnect
{
[default] interface IDispConnect;
[default, source] dispinterface _IDispConnectEvents;
[source] dispinterface _IDispConnectEvents2; // 别忘了,这里还有一行呢
};
};
好了,和前面的方式一样,增加接口函数、编译IDL文件、让IDE帮我们实现代理类代码、输入程序代码、修改框架代码中的BUG。在示例中,我们的事件函数叫 HRESULT Timer([in] VARIANT varData),varData 中传递一个时间类型(VT_DATA)的信息(注3)。下面我们来看一下代理类代码中的错误:
更多精彩
赞助商链接