Com 在从COleDocument(而不是COleControl)扩展的对象上实现IConnectionPointContainer

Com 在从COleDocument(而不是COleControl)扩展的对象上实现IConnectionPointContainer,com,mfc,ole,Com,Mfc,Ole,有人有过COM/MFC在从COleDocument(而不是COleControl)扩展的对象上实现IConnectionPointContainer的经验吗?有没有人能提供一些建议,或是如何做的指南?我需要为侦听文档更改的对象实现通知,这些更改是作为文档所实现的另一个接口实现的一部分进行的。MFC连接宏不是特定于COleControl的,而是CCmdTarget的。您可以使用DECLARE\u CONNECTION\u MAP/BEGIN\u CONNECTION\u MAP等,在本例中,COl

有人有过COM/MFC在从COleDocument(而不是COleControl)扩展的对象上实现IConnectionPointContainer的经验吗?有没有人能提供一些建议,或是如何做的指南?我需要为侦听文档更改的对象实现通知,这些更改是作为文档所实现的另一个接口实现的一部分进行的。

MFC连接宏不是特定于COleControl的,而是CCmdTarget的。您可以使用DECLARE\u CONNECTION\u MAP/BEGIN\u CONNECTION\u MAP等,在本例中,COleDocument是

建议如下:


MFC连接宏不特定于COleControl,而是CCmdTarget。您可以使用DECLARE\u CONNECTION\u MAP/BEGIN\u CONNECTION\u MAP等,在本例中,COleDocument是

建议如下:


我实际上已经尝试过了,当我编译时,我得到了“错误C2440:静态类型转换”:无法从“类CMyDoc*”转换为“类ATL::\u ICPLocator*”指向的类型是不相关的;转换需要重新解释类型转换、C样式转换或函数样式转换”现在,我已经使用本文中的建议成功地编译了代码:,但是,每当我尝试建议一个接收器时,就会从AtlAdvise返回错误代码0x80004002,这是E_NOINTERFACE。我试着按照这里的建议去做,但没有成功。我是不是错过了什么?我的接收器接口是独立的,据我所见,一个对象可以实现多个独立的接口?QI或IconnectionPointContainer或在FindConnectionPoint?QueryInterface调用失败。我应该提供ConnectionPointContainer的对象是从COleDocument扩展而来的,我还验证了我正在文档的构造函数中调用EnableConnections(),实际上我已经尝试过了,当我编译时,我得到了“错误C2440:'静态\u cast':无法从'class CMyDoc*'转换为'class ATL::\u ICPLocator*'指向的类型不相关;转换需要重新解释转换、C样式转换或函数样式转换“我现在已经设法使用本文中的建议来编译代码:,但是,每当我尝试建议一个接收器时,就会从AtlAdvise返回错误代码0x80004002,这是E_NOINTERFACE。我试着按照这里的建议去做,但没有成功。我是不是错过了什么?我的接收器接口是独立的,据我所见,一个对象可以实现多个独立的接口?QI或IconnectionPointContainer或在FindConnectionPoint?QueryInterface调用失败。我应该提供ConnectionPointContainer的对象是从COleDocument扩展而来的,其他什么都没有。我还验证了我正在文档的构造函数中调用EnableConnections()