Qt 兼容ocx 步骤记录(一)

目录

一、获取ocxuuid

二、通过Qt提供的工具对COM生成头文件和实现文件

三、在工程中引入生成的文件,直接实例化并调用即可。

四、在 Qt Designer 中添加 QAxWidget 控件

五、调用 OCX 里的方法


一、获取ocxuuid

使用OleView.exe打开ocx插件

// Generated .IDL file (by the OLE/COM Object Viewer)
// 
// typelib filename: ******.ocx

[
  uuid(********-****-****-****-************),
  version(1.0),
  helpstring....
  helpfile.....
  helpcontext(00000000),
  custom......
  custom....
  custom(........., "Created by MIDL version 7.00.0555 at Thu Jan 14 14:30:08 2021
")

]

即可看到ocx的uuid

ps:

1、OleView.exe位置:如果安装了VS的话,先用其提供的OleView.exe(一般在C:\Program Files (x86)\Windows Kits\*****\bin\x64路径下)

2、OleView.exe打开报错(dllRegisterServer in iviewers.dll failed)问题的解决:

管理员打开即可。

二、通过Qt提供的工具对COM生成头文件和实现文件

然后Qt提供了一个dumpcpp.exe,用来对指定的COM接口生成.h和.cpp文件,命令也很简单传入COM组件的UUID即可,形如"dumpcpp.exe {00000000-0000-0000-0000-000000000000}" ,然后在当前目录下就会生成对应的.h和.cpp文件了。

而且生成的类都是基于Qt的类型,使用起来相当的方便。

三、在工程中引入生成的文件,直接实例化并调用即可。

ps:

问题: 无法打开源文件"qaxobject.h",无法打开源文件"qaxwidget.h"

解决方案:

1、VS中: 项目 -> 属性 -> Qt Project Setting -> Qt Modules  增加 “ axcontainer ”

2、若依旧报错,则把

#include <qaxobject.h>
#include <qaxwidget.h>

改为

#include <ActiveQt/QAxObject>
#include <ActiveQt/QAxWidget>

至此我的代码可以正常运行 (^_^)

四、在 Qt Designer 中添加 QAxWidget 控件

添加 QAxWidget 控件,然后右键 -> 设置控件选择相应的插件(这里我不知道不选会不会有问题)。

五、调用 OCX 里的方法

将 QAxWidget 控件强转为 OCX 中继承自 QAxWidget 的类,然后进行方法的调用

((IRImageOCXLibSingle::IRImageOCX*)ui.pic)->SetFileName(dirpath);
((IRImageOCXLibSingle::IRImageOCX*)ui.pic)->ShowMaxPoint(true);
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值