com和客户之间是否可以传输函数指针?

junguo 2005-05-27 11:19:28
我试了半天,一筹莫展,call_as,callback是否能实现这样的功能?或者直接用void*?
...全文
151 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
OnlyHappy 2005-05-27
  • 打赏
  • 举报
回复
关注一下先
junguo 2005-05-27
  • 打赏
  • 举报
回复
没有办法吗?
junguo 2005-05-27
  • 打赏
  • 举报
回复
怎么弄呢?有方法吗?我直接在接口里写成
[id(1), helpstring("method Add")] HRESULT Add(void (*fun)());
编译报错!
dongfa 2005-05-27
  • 打赏
  • 举报
回复
进程内 函数指针是可以的.
junguo 2005-05-27
  • 打赏
  • 举报
回复
不用连接点呢?无法实现吗?
jerry 2005-05-27
  • 打赏
  • 举报
回复
楼上说得不错,可以通过 连接点 回调,虽然这种方式效率不是很高(是通过 IDispatch接口来进行的),做起来也比较烦,不过它适用任何语言,包括脚本代码。 如果要高效一点的话,可能将一个COM 接口 传递进去。组件直接回调此接口。但这种方法只有高级语言才可以。
sinall 2005-05-27
  • 打赏
  • 举报
回复
用连接点。
bobob 2005-05-27
  • 打赏
  • 举报
回复
函数指针没有试过,呵呵
  • 打赏
  • 举报
回复
COM组件可以通过代理调度,函数指针不能调度,通过void *传递可以,但是感觉应该是进程内组件才行,没试过
jerry 2005-05-27
  • 打赏
  • 举报
回复
函数指针不行吧?? 进程内可能还差不多, 进程外的函数指针可以通过 COM进行调度吗? 除非自己写代理,存根

COM 指针倒是可以传递的.
bobob 2005-05-27
  • 打赏
  • 举报
回复
进程外都可以
junguo 2005-05-27
  • 打赏
  • 举报
回复
进程内的!
junguo 2005-05-27
  • 打赏
  • 举报
回复
我现在想通过客户传过来一个函数指针,在com中使用该指针,该怎么做?
dongfa 2005-05-27
  • 打赏
  • 举报
回复
进程内还是进程外呀?
bobob 2005-05-27
  • 打赏
  • 举报
回复
可以,com代理已经帮你完成了两个进程之间指针的转换
dongfa 2005-05-27
  • 打赏
  • 举报
回复
在定义时可以把函数指针转换为long.
[id(1), helpstring("method Add")] HRESULT Add(long pFunc);

typedef void (* func)(void);

然后内部在转换为你的函数指针.

func m_pFunc = (func)pFunc;

3,248

社区成员

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

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