在com中声明了一个回调接口
interface ICallBack : IUnknown
{
HRESULT SayHello();
};inteface ITest : IUnknown
{
HREAULT Register(ICallBack* pcb, DWORD* pid)
}在客户端实现该接口,并注册回调,为什么调用时客户端实现的SayHello执行不到?在线等待,很急,各位对com中的回调有什么好的办法.
interface ICallBack : IUnknown
{
HRESULT SayHello();
};inteface ITest : IUnknown
{
HREAULT Register(ICallBack* pcb, DWORD* pid)
}在客户端实现该接口,并注册回调,为什么调用时客户端实现的SayHello执行不到?在线等待,很急,各位对com中的回调有什么好的办法.
请大家也关注一下http://community.csdn.net/Expert/topic/3654/3654639.xml?temp=.6078302
HREAULT UnRegister(DWORD id)
{
反注册
}HREAULT Register(ICallBack* pcb, DWORD* pid)
{
check pcb
check pid if (m_arCallBase中有)
{
*pid = (DWORD)pcb;
return S_OK;
}
pcb->addref()
m_arCallBase.add(pcb)
*pid = (DWORD)pcb;
return S_OK;
}CTest::ddd()
{
for(m_arCallBase)
m_pcb->SayHello();
}
FinalRelease()
{
删除
}
1。把客户端函数的地址当作参数传递到COM的方法
2。使用连接点,这个:
http://blog.csdn.net/vigorcsdn/archive/2004/11/04/166267.aspx