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

yang_yulei 西安电子科技大学 2014-07-13 05:24:39

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

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



...全文
211 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过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接口指针。
回复
相关推荐
发帖
C++ 语言
创建于2007-09-28

6.0w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2014-07-13 05:24
社区公告
暂无公告