Qt5調用MFC ActiveX插件接口

Qt5中提供了調用ocx插件接口的方法,也提供了自己的插件開發方法QtActiveX的方式來開發插件。本博客僅說明在使用Qt5調用MFC的插件接口的方法。

  • 在windows系統中,打開盤符“C:\Program Files (x86)\Windows Kits\8.1\bin\x86 或者 C:\Program Files (x86)\Windows Kits\8.1\bin\x64”找到程序 oleview.exe ,並以管理員模式打開該運行程序。如下圖:

  • 打開上述軟件後,點擊工具欄文件夾邊上的三個小飛機,打開自己的ocx文件,可以看到該ocx 的UUID

 

  • 打開Qt安裝目錄下的dumpcpp.exe,我的路徑是 (D:\Qt5.14.1\5.14.1\mingw73_32\bin\dumpcpp.exe)

在控制檯cmd中執行  dumpcpp.exe {UUID}  該UUID就是ocx插件的UUID,

例如:dumpcpp.exe {98BD8966-12E5-4291-A8B5-E850F8E53934},執行完畢後就可在dumpcpp.exe所在的目錄(D:\Qt5.14.1\5.14.1\mingw73_32\bin\)生成Qt版本的ocx插件的頭文件和cpp文件。

 

  • 將生成的.h、.cpp文件添加到項目中,如果報出頭文件未找到等情況,在項目文件.pro文件中添加 QT+= axcontainer 即可。

  • 調用OCX的接口的方式如下:

方式一:將生成的頭文件包含在項目中。然後調用生成的類名,聲明ocx對象即可。

QtOcxTestLib::QtOcxTest m_actiC;

QString str1=m_actiC.BncInitVoip();

方式二:使用生成的UUID,並通過一個組件QAxWidget加載該ocx。

QAxWidget *m_axWidget = new QAxWidget(parent);

m_axWidget->resize(500,80);        

m_axWidget->setControl(QString::fromUtf8("{C34B626E-1530-41BB-A847-28A1F9F9AE37}"));

QString str1=m_axWidget->dynamicCall("BncInitVoip()").toString();

注:採用方式二加載OCX時,調用接口使用函數dynamicCall,返回值是一個QVariant。調用方式如下:

       註冊ocx的控件->dynamicCall(“接口名稱(參數1類型,參數2類型....)”,參數1,參數2......)

例如:Bool  ret = m_axWidget->dynamicCall("Init(LPCTSTR, LPCTSTR)", strFirst, strSecond).toBool();

  • OCX參數類型、返回值類型對應Qt類型

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章