2

我有一个继承自“DispEventAdvise”的类(对于outlook2010,但它并不重要):

class item_2010_event_handler : 
public IDispEventSimpleImpl<IDC_OUTLOOK_ITEM_2010_EVENTS, 
                            item_2010_event_handler, 
                            &outlook_item_2010_ev_id>

现在,我想注册 item_2010_event_handler 的单个实例以从多个对象获取事件,因此我多次调用 DispEventAdvise()(每个对象一次),但是从第二次调用 DispEventAdvise() 开始,我得到“未知错误”异常从功能上。

有可能不支持吗?如果没有,为什么不呢???

如果可能的话,我错过了什么(显然,如果需要,我会添加更多代码......)?

4

1 回答 1

0

您继承的每个“副本”IDispEventSimpleImpl都保留一个所谓的“cookie”,这是您稍后需要取消通知/断开事件连接时提供回连接点的值。话虽如此,IDispEventSimpleImpl类(注意名称中的“简单”一词)仅支持一种连接。

您的选择是:

  1. 重写IDispEventSimpleImpl类,以便替换类可以连接到正确管理连接的多个点
  2. 为每个连接创建一个连接点接收器类的帮助程序实例,然后将调用转发回所有者,使其从多个来源收集调用 -推荐
  3. 从不同的基础继承多次IDispEventSimpleImpl以支持单个实例上的更多连接(尽管数量固定 - 缺乏灵活性,适用于每种源类型的多个连接)
于 2014-01-13T16:47:08.460 回答