关于连接点的问题,advise返回E_NOTIMPL

WQ 2007-10-30 09:29:58
关于连接点的问题,advise返回E_NOTIMPL

SINK的代码
CConnSink::CConnSink(DWORD mti_in)
{
mti=mti_in;
}

CConnSink::~CConnSink(void)
{
}


STDMETHODIMP CConnSink::QueryInterface(const struct _GUID &iid,void ** ppv)
{
*ppv=this;
return S_OK;
}

ULONG __stdcall CConnSink::AddRef(void)
{ return 1; }

ULONG __stdcall CConnSink::Release(void)
{ return 0; }

STDMETHODIMP CConnSink::GetTypeInfoCount(unsigned int *)
{ return E_NOTIMPL; }

STDMETHODIMP CConnSink::GetTypeInfo(unsigned int,unsigned long,struct ITypeInfo ** )
{ return E_NOTIMPL; }

STDMETHODIMP CConnSink::GetIDsOfNames(const IID &,LPOLESTR *,UINT,LCID,DISPID *)
{ return E_NOTIMPL; }

STDMETHODIMP CConnSink::Invoke(
long dispID,
const struct _GUID &,
unsigned long,
unsigned short,
struct tagDISPPARAMS * pParams,
struct tagVARIANT *,
struct tagEXCEPINFO *,
unsigned int *)
{
switch(dispID)
{
case 1:
if(mti!=0 && pParams->cArgs==1 && pParams->rgvarg->vt==VT_BSTR){
ConnMsg *connMsg=new ConnMsg;
connMsg->context=context;
connMsg->data=pParams->rgvarg->bstrVal;
PostThreadMessage(mti,WM_SDMSG,0,(LPARAM)connMsg);
}
break;
default:
break;
}
return S_OK;
}

连接代码
lpDisp->Release();
LPCONNECTIONPOINT pConnPt;
hr=pConnPtCont->FindConnectionPoint(DIID__IEComEvents,&pConnPt);
if(FAILED(hr))
{
m_conn->Release();
pConnPtCont->Release();
return 0;
}
pConnPtCont->Release();
//
COMM_STRUCT *pcs=new COMM_STRUCT;
pcs->m_conn=m_conn;
pcs->m_ref=1;
pcs->ConnSink=new CConnSink(manager_thread_id);(就是上面的代码)
LPDISPATCH lpSink;
pcs->ConnSink->QueryInterface(IID_IDispatch,(void**)&lpSink);
pcs->ConnSink->context=context;
hr=pConnPt->Advise(lpSink,&pcs->dwCookie);
if(FAILED(hr))
{
delete pcs->ConnSink;
delete pcs;
pConnPt->Release();
m_conn->Release();
return 0;
}

...全文
151 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
admy 2009-03-06
  • 打赏
  • 举报
回复
唉,又是一个烂尾贴.我也碰到这问题了:调进程内的组件事件,没有问题;调进程外的,前面部分都正常,一执行Advice就报E_NOTIMPL,有人有答案吗?
jucee 2007-10-30
  • 打赏
  • 举报
回复
从这上面看不出啥问题,最好把组件的代码也贴出来。
WQ 2007-10-30
  • 打赏
  • 举报
回复
进程内组件,实现了
ouyh12345 2007-10-30
  • 打赏
  • 举报
回复
com组件是什么类型的?
实现连接点没有?
wshcdr 2007-10-30
  • 打赏
  • 举报
回复
http://www.vckbase.com/document/viewdoc/?id=1538

先扔一个链接吧

看看LZ做的是不是有问题

3,248

社区成员

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

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