我问个关于连接点实现中的 CComQIPtr<IConnectionPointContainer> 的问题
看我的代码:
CSink m_sink;// 接受器对象
DWORD m_dwCookie;// 连接的 cookie
DMsgrObjectEventsPtr m_spObj; // 组件接口指针CComQIPtr < IConnectionPoint > m_spCP;// 连接点指针
// 得到连接点容器接口
CComQIPtr <IConnectionPointContainer> spContainer( m_spObj );
if( !spContainer )
{
AfxMessageBox( _T( "组件没有提供连接点功能 ") );
return;
}
编译通过!但运行时总提示( "组件没有提供连接点功能 ")
请问这是怎么回事?
这问题我给40分!
[解决办法]
m_spObj没有赋值
[解决办法]
说明你的对象在QueryInterface接口IConnectionPointContainer的时候没有成功,你的组件对象可能是个非链接对象。要想要组件支持事件,是要做一些处理的。可以参考学习http://www.vckbase.com/document/viewdoc/?id=1538
[解决办法]
如果组件中没有 实现事件,当然就不行了
[解决办法]
单步调试,跟到CComQIPtr代码里面看是不是QueryInterface错了,根据返回错误码,就是那个HRESULT,查错误信息