在Qt中使用ActiveX控件.docxVIP

  • 0
  • 0
  • 约2千字
  • 约 3页
  • 2023-08-03 发布于山东
  • 举报
在Qt中使用ActiveX控件 Qt的windows商业版本提供了ActiveQt这个framework,使用这个组件我们能够在Qt中使用ActiveX控件,并且也开发鉴于Qt的ActiveX控件。ActiveQt包含了两个组件QAxContainer和QAxServer。 QAxContainer允许我们使用COM对象,并且能够将将ActiveX控件 嵌入到Qt程序中去。 QAxServer能够将我们写的Qt控件导出为COM对象或许是ActiveX 控件。 第一个例子我们来演示一下在Qt中使用shockwaveFlash这个ActiveX控件。 #includeQApplication #includeQtGui #includeQAxWidget intmain(intargc,char*argv[]) { QApplicationa(argc,argv); QAxWidget*flash=newQAxWidget(0,0); flash-resize(500,80); flash-setControl(QString::fromUtf8({d27cdb6e-ae6d-11cf-96b8-444553540000})); flash-dynamicCall(LoadMovie(long,string),0,c:/1.swf);flash-show( ); returna.exec( ); } QAxContainer不包含在QtCore里面,所以要使用QAxContainer的话还必须要在.pro文件中增添CONFIG+=qaxcontainer 下面就来解释一下上面的代码: 首先我们创立了一个QAxWidget对象。QAxWidget对象是用来封装 ShockwaveFlash这个ActiveX控件。QAxContainer是有三个类组成的。分别是:QAxObject封装了COM对象、QAxWidget封装了ActiveX控件、QAxBase是QAxObject和QAxWidget的父类,它实现了封装 COM的核心函数。 这三个类的关系如下: 然后经过setControl设置ShockwaveFlash这个ActiveX控件的 class_id,classID能够经过一些其余的编程工具获得(vc/Delphi/MicrosoftActiveXControlPad)。这时就会调用 CoCreateInstance创立ActiveX控件的实例。这时这个ActiveX控件的所有的属性、方法、事件将经过QAxWidget变换为Qt的properties、 signals和slots。 经过调用QAxWidget的property( )方法和SetProperty方法能够获取和设置ActiveX控件的属性。 既然能够调用ActiveX控件的方法属性,自然也就需要有COM中的数据种类和Qt中的使用的数据种类的变换了。下面就是COM中数据 种类和Qt中的数据种类对应的表格: 经过dynamicCall方法来调用ActiveX控件的方法。 1)dynamicCall( )最多传达八个QVariant种类的参数,并且返回种类也是QVariant。 2)如果我们需要传达IDispatch*或许是IUnknown*,我们能够将这些组件封装成QAxObject,然后经过调用asVariant( )方法来将这个COM对象变换为QVariant。同样如果我们返回一个IDispatch*或许IUnknown*的对象,就需要经过querySubObject方法将这个对象变换为QAxObject。 QAxObject*session=outlook.querySubObject(Session); 如果不想这样做还能够QAxWidget还为我们提供了QueryInterface方 法 IWebBrowser2*webBrowser=0; activeX-queryInterface(IID_IWebBrowser2,(void*)webBrowser); if(webBrowser){ webBrowser-Navigate2(pvarURL); webBrowser-Release( ); } 4)dynamicCall方法还能够设置COM控件的属性: activeX-dynamicCall(Value,5); QStringtext=activeX-dynamicCall(Text).toString( ); 5)经过dynamicCall调用COM对象的方法的时候需要提供达成的函数署名。 activeX-dynamicCall(Navigate(constQString),);

文档评论(0)

1亿VIP精品文档

相关文档