获取的函数返回的LPDISPATCH该如何使用?

yang_yulei 2014-07-13 05:24:39

我在VS下用的ActiveX控件TeeChart,其成员函数get_asPoint3D()返回的是LPDISPATCH。(我希望它返回CPoint3DSeries类对象)。 强制转换的话,运行出错Invalid class typecast。

怎么办?我如何用函数返回的这个LPDISPATCH,得到我想要的CPoint3DSeries对象?



...全文
384 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_27592925 2015-04-29
  • 打赏
  • 举报
回复
楼主,请问你解决了这个问题了吗?我也是遇到这个情况,不懂怎么弄啊。虽然隔了好久,但是还是忍不住要问,我在网上找不到VS2010用TeeChart画三维图的资料。还有我发现有些函数像下面的是可以转换的,不知道为什么。.get_Bottom()的返回值也是LPDISPATCH CAxes chartaxis = (CAxes)initChart->get_Axis(); CAxis chartBottomAxis = (CAxis)chartaxis.get_Bottom();
yang_yulei 2014-07-13
  • 打赏
  • 举报
回复
引用 1 楼 jiangsheng 的回复:
先用OLEView看返回值是什么类型,然后去查类型对应的IDispatch封装类是什么。不能把COM接口指针强制转换为封装类的。但是封装类应该有方法attach到一个COM接口指针。
[size=16px]十分感谢。 我这个封装类中确实有个AttachDispatch方法,但是用了之后编译通过,但还是运行报错Invalid class typecast。 LPDISPATCH lpDispatch = Series.get_asPoint3D() ; CPoint3DSeries PointSeries ; PointSeries.AttachDispatch(lpDispatch) ;[/size]
蒋晟 2014-07-13
  • 打赏
  • 举报
回复
先用OLEView看返回值是什么类型,然后去查类型对应的IDispatch封装类是什么。不能把COM接口指针强制转换为封装类的。但是封装类应该有方法attach到一个COM接口指针。

64,666

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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