2023年12月10日发(作者:)

Qt ActiveX创建、调用和调试

1. 创建并设置工程

vs2008新建Qt ActiveX工程:

下一步默认选择,加载Core library、GUI library、ActiveQt server library,默认下一步,finish.

设置工程的属性:

属性->配置属性->调试 命令:在用浏览器测试ocx的时候用得到,建议填写IE的绝对路径;命令参数:填写嵌入你的ocx的html的绝对路径。

2.

在第一部设置好后,随便写几个信号和槽链接,生成一个dll组件(Active

控件可使ocx或dll,我这里是dll),将生成的dll用depends工具查看该dll的所有依赖项,将所有的依赖项拷贝到当前目录,编写ActiveX控件注册脚本,将

重命名为放在生成目录下,双击此文件等待注册成功:

我的生成目录:

3. 编写html脚本嵌入ocx

如果ocx想要通过IE浏览器调用,则必须编写html脚本掉用控件,通常的例子如

下,保持你的html路径与你在设置工程时的路径一致。

Test page for WebCall ActiveX

ID="ActiveXTest"

CLASSID="CLSID:64A09A02-D01F-46D4-A597-EF106A4FADC5"

width="100%" height="100%" codebase="#version=1.0.0">

重名名为

4. 调试ActiveX控件

一般调试ActiveX控件有两种方式:通过IE调试,通过编写测试程序调用Activex调试。

IE调试:先将工程运行起来,再选择工具栏中的工具->附加到进程->选择你的浏览器

(我的是),确定开始调试。(这里用IE调试时需要加载很多系统的pdb,比较麻烦,我这里没有成功)。

编写测试程序调试:在当前工程下新建一个测试工程,编写测试代码:

#include "test.h"

#include

#include

#include

#pragma comment(lib,"")

//此程序用来测试上面的ActiveXTest是否能正常使用

//在调试ocx时必须先写一个测试程序才能调试

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

QAxWidget *flash = new QAxWidget(0,0);

flash->resize(500,80);

flash->setControl(QString::fromUtf8("{64A09A02-D01F-46D4-A597-EF106A4FADC5}"));

flash->dynamicCall("onBtnClicked()");

flash->show();

return ();

}

将所有的ActiveX工程的dll和pdb拷贝到测试程序的生成目录下,方便调试时找到源代码的符号,在ActiveX工程中打断点,运行测试程序,成功

具体可参考ActiveXTest附件。

/s/1i3FY16H