连接点实现问题!高手请进!!!!

qyluo 2003-02-27 04:59:05
void Connect()
{
if(m_dwCookie!=0)
{
return;
}
if(m_pIUnknown!=NULL)
{
HRESULT hResult;
hResult = m_pIUnknown->QueryInterface(IID_IConnectionPointContainer,
(void**)&pConnPtCont);
if(FAILED(hResult))
{
::AfxMessageBox("不能获取对象的IConnectionPointContainer接口!");
return;
}
ASSERT(pConnPtCont != NULL);
hResult = pConnPtCont->FindConnectionPoint(IID_ICMSCallControlEvent,&pConnPt);
if(FAILED(hResult))
{
pConnPtCont->Release();
::AfxMessageBox("不能获取对象的IEventSink连接点接口!");
return;
}
ASSERT(pConnPt != NULL);
//获取事件接收器指针
IUnknown* pIEventSink;
m_xEventSink.QueryInterface(IID_IUnknown,(void**)&pIEventSink);
//通过连接点接口的Advise方法将事件接收器指针传给可连接对象
if(SUCCEEDED(pConnPt->Advise(pIEventSink,&m_dwCookie)))
{
::AfxMessageBox("与可连接对象ConnObject建立连接成功!");
}
else
{
::AfxMessageBox("不能与ConnObject建立连接!");
}
pConnPt->Release();
pConnPtCont->Release();
}
}
我的COM对象是用MFC实现的,以上是我的客户端连接部分的代码,函数pConnPt->Advise(pIEventSink,&m_dwCookie)之前的代码都运行正常,hr返回为0,但是就是
Advise()调用返回结果不正确,实在不明白为什么,不知道是我的客户端的代码的问题,还是服务器端的代码的问题,哪位大侠指点一下!!!!!
...全文
27 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaohyy 2003-09-28
  • 打赏
  • 举报
回复
在调用advise后用GetLastError看看错误代码。。
zxm521b 2003-09-28
  • 打赏
  • 举报
回复
ULONG CVisCMSDlg::XEventSink::Release()
{
return 0;
}
看看是不是有调用过它?
look4u 2003-09-28
  • 打赏
  • 举报
回复
in!
beijingshizi 2003-03-03
  • 打赏
  • 举报
回复
那我不up了,我 gz! 嘿嘿


各位高手帮忙啊! 俺虚心学习啊~~~~


qyluo 什么人啊 ? 这么吊?
qyluo 2003-03-03
  • 打赏
  • 举报
回复
楼上的傻鸟,你倒是说两句啊,up个蛋!!!
beijingshizi 2003-03-03
  • 打赏
  • 举报
回复
up
starchu1981 2003-02-28
  • 打赏
  • 举报
回复
//获取事件接收器指针
IUnknown* pIEventSink;
m_xEventSink.QueryInterface(IID_IUnknown,(void**)&pIEventSink);
问题可能就出在这一不,你把这几条删除直接用。
pConnPt->Advise(&m_xEventSink,&m_dwCookie)

qyluo 2003-02-28
  • 打赏
  • 举报
回复
楼上的哥哥,我早就这样试过了,一样的结果,不行!!!
qyluo 2003-02-28
  • 打赏
  • 举报
回复
哪位帮我想想啊,还是不行啊!!!!
starchu1981 2003-02-27
  • 打赏
  • 举报
回复
你试一下直接用以下调用
pConnPt->Advise(&m_xEventSink,&m_dwCookie)
我保证这样没问题
arxing 2003-02-27
  • 打赏
  • 举报
回复
在服务端跟踪Advise.
qyluo 2003-02-27
  • 打赏
  • 举报
回复
我的程序好像没有出现异常啊,可以继续执行啊!?
0xc0000005是什么异常啊!?
lwg7603 2003-02-27
  • 打赏
  • 举报
回复
可能发生异常了0xc0000005
qyluo 2003-02-27
  • 打赏
  • 举报
回复
-1073741819
lwg7603 2003-02-27
  • 打赏
  • 举报
回复
看看Advise的返回值??
qyluo 2003-02-27
  • 打赏
  • 举报
回复
我的QueryInterface没有问题,刚才贴的时候贴少了!!!
qyluo 2003-02-27
  • 打赏
  • 举报
回复
不好意思,更正一下,
HRESULT CVisCMSDlg::XEventSink::QueryInterface(REFIID iid, void ** ppv)
{
if(IsEqualIID(iid,IID_IUnknown)||
IsEqualIID(iid,IID_ICMSCallControlEvent))
{
*ppv = this;
AddRef();
}
return S_OK;
}
lwg7603 2003-02-27
  • 打赏
  • 举报
回复
HRESULT CVisCMSDlg::XEventSink::QueryInterface(REFIID iid, void ** ppv)
{
*ppv = (ICMSCallControlEvent *)this;
return S_OK;
}
qyluo 2003-02-27
  • 打赏
  • 举报
回复
还需要什么别的吗??
qyluo 2003-02-27
  • 打赏
  • 举报
回复
ULONG CVisCMSDlg::XEventSink::AddRef()
{
return 1;
}

HRESULT CVisCMSDlg::XEventSink::QueryInterface(REFIID iid, void ** ppv)
{

return S_OK;
}

ULONG CVisCMSDlg::XEventSink::Release()
{
return 0;
}
加载更多回复(5)

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧