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

COM 组件设计与应用(十五)——连接点(vc6.0)

 2006-07-22 22:55:35 来源:WEB开发网   
核心提示: 13、选择你要让 IDE 帮你生成哪个连接点的代理程序代码,我们这个组件只有一个连接点,COM 组件设计与应用(十五)——连接点(vc6.0)(3),那只好选择它了, (在示例二中,我们需要进行修改,这是后话,我们需要实现两个连接点,那个时候

13、选择你要让 IDE 帮你生成哪个连接点的代理程序代码。我们这个组件只有一个连接点,那只好选择它了。 (在示例二中,我们需要实现两个连接点,那个时候,你就要选择两个了)

14、到此,VC 的 IDE 终于帮咱们完成了所有的框架,下面该咱们自己写真正的任务代码啦。

STDMETHODIMP CDispConnect::Add(long n1, long n2)
{
  long nVal = n1 + n2;
  Fire_Result( nVal );  // 调用IDE帮我们生成的代理函数代码,发出事件
  return S_OK;
}

15、修正 IDE 产生的代码中的错误。你不用死记硬背错误点,只要编译一下就会报出错误了。一般 VC6 帮我们生成的代码中,有2个地方可能会有BUG。一是打开头文件,找到连接点影射宏,修改如下:

BEGIN_CONNECTION_POINT_MAP(CDispConnect)
  CONNECTION_POINT_ENTRY(DIID__IDispConnectEvents)  // 修改 IID_XXXX 为 DIID_XXXX
END_CONNECTION_POINT_MAP()

这个错误简直可恨,既然我们使用的是双接口连接点,它生成的代码居然不会判断吗?另一个可能的错误可能发生在代理类中的 Fire_xxxx() 函数中。在示例程序中的 Fire_Result() 函数代码,大家自己去阅读,简单说就是循环地取得每个和自己连接对象(每个cookie表示的对象)的接口指针,(如果是自动化接口,则再取得 IDispatch 接口指针),然后调用事件函数。你不理解它现在没有太大的关系,不过在后面的示例二中,它给我们产生的代码是有错误的,我们需要进行修改。这是后话,待会儿再说。

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

Tags:COM 组件 设计

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