怎么在COM组件中添加设置回调函数的接口
如何在COM组件中添加设置回调函数的接口?
通过MFC添加ATL类,需要实现一个设置回调的接口函数:
函数声明类似:
HRESULT SetCallBack( long hHandle, long ( __stdcall * CallBack )( long lType, long lPara1, long lPara2 ) );
但是使用MFC向导添加不上,提示错误。
手动修改idl文件添加
[helpstring( "method SetCallBack ")] HRESULT SetCallBack(long hHandle,long ( __stdcall * CallBack)( long lType, long lPara1, long lPara2 ));
编译出错,提示错误
查了半天也没有找到是什么原因。
请教各位大侠,如何在COM中添加回调函数? 不是使用连接点的方法。
非常感谢!
------解决方案--------------------
如果是在进程内,第二个参数类型用long,不要用函数指针类型,用的时候做强制转换。[helpstring( "method SetCallBack ")] HRESULT SetCallBack(long hHandle,long funptr);
------解决方案--------------------
进程外组件不能采用这种方法,因为你的指针地址只对本进程有效,跨进程最好通过connection point来实现,com会自动处理指针跨进程空间的问题。
通过MFC添加ATL类,需要实现一个设置回调的接口函数:
函数声明类似:
HRESULT SetCallBack( long hHandle, long ( __stdcall * CallBack )( long lType, long lPara1, long lPara2 ) );
但是使用MFC向导添加不上,提示错误。
手动修改idl文件添加
[helpstring( "method SetCallBack ")] HRESULT SetCallBack(long hHandle,long ( __stdcall * CallBack)( long lType, long lPara1, long lPara2 ));
编译出错,提示错误
查了半天也没有找到是什么原因。
请教各位大侠,如何在COM中添加回调函数? 不是使用连接点的方法。
非常感谢!
------解决方案--------------------
如果是在进程内,第二个参数类型用long,不要用函数指针类型,用的时候做强制转换。[helpstring( "method SetCallBack ")] HRESULT SetCallBack(long hHandle,long funptr);
------解决方案--------------------
进程外组件不能采用这种方法,因为你的指针地址只对本进程有效,跨进程最好通过connection point来实现,com会自动处理指针跨进程空间的问题。