描述:
在com中声明了一个回调接口
interface ICallBack : IUnknown
{
HRESULT SayHello();
};
inteface ITest : IUnknown
{
HREAULT Register(ICallBack* pcb, DWORD* pid)
}
在客户端实现该接口,并注册回调,为什么调用时客户端实现的SayHello执行不到?
在线等待,很急,各位对com中的回调有什么好的办法.
解决方案1:
我知道COM回调还又两种方法:
1。把客户端函数的地址当作参数传递到COM的方法
2。使用连接点,这个:
http://blog.csdn.net/vigorcsdn/archive/2004/11/04/166267.aspx
可以使用连接点机制实现,
就是 服务端-客户端 发送消息机制
掉不到,看看是不是这个实例
回调指针数组 m_arCallBase
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()
{
删除
}
GZ
请大家也关注一下http://community.csdn.net/Expert/topic/3654/3654639.xml?temp=.6078302