Qt 关于COM组件的使用的记录 (二)


接前面的COM组件使用记录。

这里要说明一下QAxObject和QAxBase的区别。

帮助文档中对QAxObject的说明:The QAxObject class provides a QObject that wraps a COM object.

       对QAxWidget的说明:The QAxWidget class is a QWidget that wraps an ActiveX control.

一个是封装COM组件,一个是包装ActiveX。

 

上一文中使用QAxObject类对象来做COM组件的使用,发现在实际使用中,有一些接口通过dynamicCall是调用不了的,会提示

QAxBase: Error calling IDispatch member checkDevice: Exception thrown by server

这样的错误。

后来查看了通过dumpcpp工具导出的.h文件,里面的类是这样

class CRITERIONLIB_EXPORT stdfcectl : public QAxWidget

因此尝试修改成QAxWidget的对象指针来进行调用,就可以调用所有的接口了。

目前使用的Qt5.5版本中,帮助文档是写的QAxObject的使用用法;后来查阅了《C++ GUI Qt4 编程 (第二版)》第23章第二节内容。里面的组件是继承的QWidget,也是用的QAxWidget来加载。

所以这里猜想,所实例化的对象,应该要根据组件的类型来选择。如果包含窗口对象,使用QAxWidget,反之QAxObject。

另外,上文中生成的html文件,里面会有详细的对每个接口的使用说明,是很好用的一个参考文件了。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM