1。m_xTBListener是源对象的CConnectionPoint继承对象的实例(BEGIN_CONNECTION_PART宏自动产生的)语句都没有问题。
但是在源对象里调用出接口函数是有问题,源码如下(仿msdn上的):
const CPtrArray* pConnections = m_xTBListener.GetConnections();
if (pConnections == NULL) {
AfxMessageBox("回调接口错误!");
return FALSE;
};
int cConnections = pConnections->GetSize();
ITBListener* pListener;
for (int i = 0; i < cConnections; i++)
{
pListener = (ITBListener*)(pConnections->GetAt(i));
ASSERT(pListener != NULL);
pListener->TB_Transfer(pmsg);
}
编译没有问题,但是在调用GetConnections函数时,内部的ASSERT(this)出异常。
苦思不得其错,请高手指点。2。MFC下IConnectionPointContainer 接口的实现结构XConnPtContainer没有
FindConnectionPoint函数,我可以在源对象端调用IConnectionPointContainer
的函数吗?如何做?谢谢。解决立刻给分,不够加。
但是在源对象里调用出接口函数是有问题,源码如下(仿msdn上的):
const CPtrArray* pConnections = m_xTBListener.GetConnections();
if (pConnections == NULL) {
AfxMessageBox("回调接口错误!");
return FALSE;
};
int cConnections = pConnections->GetSize();
ITBListener* pListener;
for (int i = 0; i < cConnections; i++)
{
pListener = (ITBListener*)(pConnections->GetAt(i));
ASSERT(pListener != NULL);
pListener->TB_Transfer(pmsg);
}
编译没有问题,但是在调用GetConnections函数时,内部的ASSERT(this)出异常。
苦思不得其错,请高手指点。2。MFC下IConnectionPointContainer 接口的实现结构XConnPtContainer没有
FindConnectionPoint函数,我可以在源对象端调用IConnectionPointContainer
的函数吗?如何做?谢谢。解决立刻给分,不够加。
解决方案 »
- 蛋疼的小问题。。DLL编译出的Release版本放在所加载的工程中运行出错,Debug版本加载后运行完全OK。。各位英雄进来瞧一瞧。。
- 利用Cfile删除文件 remove 有时删不掉
- 这个想法可行吗?关于连接和读写表
- 下载问题
- 打开工程时,完好的文件无法打开类视图,不知怎么回事???
- 怎么实现回调函数???怎么注册呢????请举个例子,给点代码
- 不知道的socket错误?
- 多个client连接到SERVER,如何只给一个指定的client发送一个server发起的消息
- MFC 图片浏览器 复制 粘贴
- CTreeView的顺序问题?
- 如何在CWinThread的派生类中设置定时器?
- 300分求基于MFC的出接口程序—解决立给,绝不食言!
客户调用的com的组件没有完全实例化起来,或者有两个com的组件
存在,调用时没有用到你想要的那个,你可以查一下组件进程实例的
个数情况。
提供的信息不够很难做出清晰的判断。
我使用了宏IMPLEMENT_OLECREATE()后可以源对象的this指针不为空,
而且正确无误,但是在GetConnections函数内部指针出错。还是非法
指针ASSERT错误;
跟进去后发现:GetConnections函数中 ASSERT_VALID(this);//出错
if (m_pConnections == NULL)
CreateConnectionArray(); ASSERT(m_pConnections != NULL);
return m_pConnections;this指针中m_pUnkFirstConnections变量指为0非法值,而且连接点
数组值非法。
但是在初始化的时候是正确的。很奇怪。希望能给出排错的方向,可能是什么问题引起的。
FindConnectionPoint函数,我可以在源对象端调用IConnectionPointContainer
的函数吗?如何做?”是错的。
MFC实现了IConnectionPointContainer::FindConnectionPoint的,用COleConnPtContainer的成员函数实现的(可查看MSDN),所以不存在没有实现“FindConnectionPoint函数”。只需用
INTERFACE_PART(名字可能记错)宏指定派生类实现了IConnectionPointContainer接口即可。
时指针是合法的。初始化成功,但是组件在调用时出接口的连接时就
不对了,这个问题把我整的够呛。2。明白楼上的意思,我查了一下,确实是实现了接口,但接口是给客户
端使用的。我想在组件端调用这个接口,就是自己调自己的接口,不是
通过成员函数方式(成员函数没有那个方法,可能是如楼上所说,内部实现)。
COleConnPtContainer temp;
temp = *reinterpret_cast< COleConnPtContainer* >( &m_xConnPtContainer );
然后调用temp的成员即可
http://expert.csdn.net/Expert/topic/2579/2579386.xml?temp=.6365473