ActiveX控件制作与发布,如何将您的C++程序嵌入到浏览器中
本文演示如何將Qt應(yīng)用程序打包嵌入IE瀏覽器并發(fā)布。
1. 例子Qt程序:
新建項(xiàng)目,選擇Qt Library類型,類名為ClassDemo。
新建QtGui類(繼承QWidge)類名ClassGui,在ClassGui的ui中添加QLabel或者QPushButton。
在ClassDemo中添加ClassGui類型的成員變量指針,添加一個(gè)public成員函數(shù)GetWidget,返回該指針。
編譯,生成動(dòng)態(tài)庫(kù)classdemo.dll。
2. 外殼Qt程序:
新建項(xiàng)目,選擇ActiveQtServer類型,類名為ClassServer。
在ClassServer中添加ClassDemo類型的成員變量指針。在構(gòu)造函數(shù)中添加如下代碼:
m_classdemo=new ClassDemo(this);
QLayout *exist_layout = this->layout();
if ( exist_layout )
{
delete exist_layout;
}
QGridLayout *layout = new QGridLayout;
layout->addWidget(m_classdemo->GetWidget(),0,0);
layout->setContentsMargins(0,0,0,0);
this->setLayout(layout);
編譯,生成動(dòng)態(tài)庫(kù)classserver.dll。
3. 編寫安裝信息文件classserver.inf
將classserver.dll依賴的所有庫(kù)找到,可能包括以下:
classserver.dll
classdemo.dll
QtGuid4.dll
QtCored4.dll
msvcp90d.dll
msvcr90d.dll
文件內(nèi)容如下:
[Version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
classdemo.dll=classdemo.dll
classserver.dll=classserver.dll
QtGuid4.dll=QtGuid4.dll
QtCored4.dll=QtCored4.dll
msvcp90d.dll=msvcp90d.dll
msvcr90d.dll=msvcr90d.dll
[classdemo.dll]
file-win32-x86=thiscab
[QtGuid4.dll]
file-win32-x86=thiscab
[QtCored4.dll]
file-win32-x86=thiscab
[msvcp90d.dll]
file-win32-x86=thiscab
DestDir=11
[msvcr90d.dll]
file-win32-x86=thiscab
DestDir=11
[classserver.dll]
file-win32-x86=thiscab
clsid={AAF5BD93-5D87-4741-8804-A8869DF7048A}
FileVersion=1,3,1,0
RegisterServer=yes
其中clsid部分的值可在classserver.cpp中找到:QAXFACTORY_DEFAULT中5個(gè)的第一個(gè)。
4. 打包:
下載cab打包工具(鏈接地址:http://download.csdn.net/detail/fm0517/5114431)。
執(zhí)行命令:
cabarc.Exe n cabname.cab?classdemo.dll classserver.dll QtGuid4.dll QtCored4.dll msvcp90d.dll msvcr90d.dll?classserver.inf
其中cabname.cab為cab包的名字,后面的參數(shù)為所有相關(guān)動(dòng)態(tài)庫(kù)和安裝信息文件
5. 寫html文件:
例子如下:
<HTML>?
<HEAD>?
<TITLE>New Page</TITLE>?
</HEAD>?
<BODY>?
<br></br>
<object ID="QSimpleAX" width=500 height=300 CLASSID="CLSID:AAF5BD93-5D87-4741-8804-A8869DF7048A" CODEBASE="cabname.cab"></object>
</BODY>?
</HTML>?
其中CLSID同inf文件中的clsid,CODEBASE為cab包的名字。
要求將cab包和html文件放在同一個(gè)目錄下。
6. 發(fā)布:
安裝apache或tomcat,將cab包和html放在相應(yīng)目錄下即可。
打包成cab后就不需要在本機(jī)運(yùn)行Regsvr注冊(cè)了。
總結(jié)
以上是生活随笔為你收集整理的ActiveX控件制作与发布,如何将您的C++程序嵌入到浏览器中的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 在已交出句柄的QWidget上叠加透明形
- 下一篇: 大气中空气动力学当量直径小于或等于多少微