WEB开发网
开发学院软件开发VC COM 组件设计与应用(十五)——连接点(vc6.0) 阅读

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)。下面我们来看一下代理类代码中的错误:

上一页  1 2 3 4 5 6  下一页

Tags:COM 组件 设计

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接