ActiveX.pro

  1. #-------------------------------------------------
  2. #
  3. # Project created by QtCreator 2018-01-19T09:37:39
  4. #
  5. #-------------------------------------------------
  6. # Qt shared
  7. QT_CI_JENKINS_HOME=$$(JENKINS_HOME)
  8. !isEmpty(QT_CI_JENKINS_HOME) {
  9. message("Qt CI environment detected, suppressing example registration")
  10. CONFIG += qaxserver_no_postlink
  11. }
  12. TEMPLATE = app
  13. TARGET = ActiveX
  14. CONFIG += warn_off
  15. QT += core widgets axserver
  16. SOURCES += \
  17. main.cpp \
  18. activex.cpp \
  19. HEADERS += \
  20. activex.h
  21. FORMS += \
  22. activex.ui
  23. RC_FILE = ActiveX.rc
  24. DEF_FILE = ActiveX.def

activex.h

  1. #ifndef ACTIVEX_H
  2. #define ACTIVEX_H
  3. #include <QWidget>
  4. #include <QtCore>
  5. #include <ActiveQt>
  6. //# 设置内存执行编码 UTF-8
  7. #ifdef Q_OS_WIN
  8. #pragma execution_character_set("UTF-8")
  9. #endif
  10. // ObjectSafety
  11. //# 控件安全标记类
  12. #include <QAxAggregated>
  13. #include <objsafe.h>
  14. #include <QUuid>
  15. class ObjectSafety : public QAxAggregated, public IObjectSafety
  16. {
  17. public:
  18. ObjectSafety(){
  19. }
  20. QAXAGG_IUNKNOWN;
  21. long queryInterface(const QUuid &iid, void **iface)
  22. {
  23. *iface = NULL;
  24. if (iid == IID_IObjectSafety)
  25. {
  26. *iface = (IObjectSafety*)this;
  27. }
  28. else
  29. {
  30. return E_NOINTERFACE;
  31. }
  32. AddRef();
  33. return S_OK;
  34. }
  35. HRESULT WINAPI GetInterfaceSafetyOptions(REFIID riid, DWORD *pdwSupportedOptions, DWORD *pdwEnabledOptions)
  36. {
  37. *pdwSupportedOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA | INTERFACESAFE_FOR_UNTRUSTED_CALLER;
  38. *pdwEnabledOptions = INTERFACESAFE_FOR_UNTRUSTED_DATA | INTERFACESAFE_FOR_UNTRUSTED_CALLER;
  39. return S_OK;
  40. }
  41. HRESULT WINAPI SetInterfaceSafetyOptions(REFIID riid, DWORD pdwSupportedOptions, DWORD pdwEnabledOptions)
  42. {
  43. return S_OK;
  44. }
  45. };
  46. //End ObjectSafety
  47. namespace Ui {
  48. class ActiveX;
  49. }
  50. class ActiveX : public QWidget,public QAxBindable
  51. {
  52. Q_OBJECT
  53. Q_CLASSINFO("ClassID", "{DF16845C-92CD-4AAB-A982-EB9840E74669}")
  54. Q_CLASSINFO("InterfaceID", "{616F620B-91C5-4410-A74E-6B81C76FFFE0}")
  55. Q_CLASSINFO("EventsID", "{E1816BBA-BF5D-4A31-9855-D6BA432055FF}")
  56. public:
  57. explicit ActiveX(QWidget *parent = 0);
  58. ~ActiveX();
  59. public Q_SLOTS:
  60. QString Version();
  61. private:
  62. Ui::ActiveX *ui;
  63. QAxAggregated* createAggregate()
  64. {
  65. return new ObjectSafety;
  66. }
  67. };
  68. #endif // ACTIVEX_H

activex.cpp

  1. #include "activex.h"
  2. #include "ui_activex.h"
  3. ActiveX::ActiveX(QWidget *parent) :
  4. QWidget(parent),
  5. ui(new Ui::ActiveX)
  6. {
  7. ui->setupUi(this);
  8. }
  9. ActiveX::~ActiveX()
  10. {
  11. delete ui;
  12. }
  13. QString ActiveX::Version()
  14. {
  15. return QString("ActiveX 1.0.0");
  16. }

main.cpp

  1. #include "activex.h"
  2. #include <QApplication>
  3. int main(int argc, char *argv[])
  4. {
  5. QApplication app(argc, argv);
  6. if (!QAxFactory::isServer()) {
  7. ActiveX w;
  8. w.show();
  9. return app.exec();
  10. }
  11. return app.exec();
  12. }
  13. //! [1]
  14. QAXFACTORY_BEGIN("{EC08F8FC-2754-47AB-8EFE-56A54057F34E}", /* type library ID */ "{A095BA0C-224F-4933-A458-2DD7F6B85D8F}") /* application ID */
  15. QAXCLASS(ActiveX)
  16. QAXFACTORY_END()
  17. //! [1]

ActiveX.def

  1. EXPORTS
  2. DllCanUnloadNow PRIVATE
  3. DllGetClassObject PRIVATE
  4. DllRegisterServer PRIVATE
  5. DllUnregisterServer PRIVATE
  6. DumpIDL PRIVATE

`index.html'

  1. <html lang="en">
  2. <head>
  3. <meta name="GENERATOR" content="Microsoft Visual Studio">
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  5. <title>ActiveXCameraGui</title>
  6. </head>
  7. <body>
  8. <object id="ActiveQtServer" style="width:256px;height:256px;" classid="CLSID:DF16845C-92CD-4AAB-A982-EB9840E74669">
  9. <param name="Version" value="BTC">
  10. </object>
  11. <button onclick="alert(ActiveQtServer.Version())">Version</button>
  12. <script>
  13. window.onload = function () {
  14. //var ret = ActiveQtServer.Version;
  15. //alert(ret);//打印 初始化版本信息
  16. //alert("Hello World!");//打印 Hello World!
  17. };
  18. </script>
  19. </body>
  20. </html>

Qt create 如何构建 ActiveX 控件?的更多相关文章

  1. Qt 环境下的activex控件编程-------1

    本人第一次接触这种activeX控件的东西,参考了网上很多的教程,终于耗时三个多小时初步理解并编写了一个小demo,现在分享给大家,希望大家少走弯路.步骤如下: 1>像平常创建项目一样创建一个d ...

  2. 在Qt中使用ActiveX控件

    Qt的windows商业版本提供了ActiveQt这个framework,使用这个组件我们可以在Qt中使用ActiveX控件,并且也开发基于Qt的ActiveX控件.ActiveQt包含了两个组件QA ...

  3. Qt编写activex控件在网页中运行

    qt能够实现的东西非常多,还可以写activex控件直接在网页中运行.参照qtdemo下的例子即可. 方案一:可执行文件下载:https://pan.baidu.com/s/14ge9ix2Ny0x7 ...

  4. Qt中使用ActiveX控件

    (转自:http://blog.csdn.net/tingsking18/article/details/5403038) 在Qt中使用ActiveX控件 Qt的windows商业版本提供了Activ ...

  5. c# 开发ActiveX控件,添加事件,QT调用事件

    c# 开发 ActiveX 的过程参考我的另一篇文章 :  https://www.cnblogs.com/baqifanye/p/10414004.html 本篇讲如何 在C# 开发的ActiveX ...

  6. Qt开发Activex笔记(二):Qt调用Qt开发的Activex控件

    若该文为原创文章,转载请注明原文出处本文章博客地址:https://blog.csdn.net/qq21497936/article/details/113789693 长期持续带来更多项目与技术分享 ...

  7. ActiveX控件(ATL篇)

    目录 第1章 VC++6.0创建    2 1.1 目标    2 1.2 创建项目    2 1.3 增加COM类    4 1.4 属性    7 1.5 事件    8 1.6 实现连接点    ...

  8. ActiveX控件

    什么是ActiveX控件:一个进程内服务器,支持多种的COM接口.(可以理解为,一个COM接口是一个纯抽象基类,你实现了它,并且它支持自注册,就是一个ActiveX控件了)可以把ActiveX控件看做 ...

  9. COM组件开发实践(八)---多线程ActiveX控件和自动调整ActiveX控件大小(下)

    源代码下载:MyActiveX20081229.rar 声明:本文代码基于CodeProject的文章<A Complete ActiveX Web Control Tutorial>修改 ...

随机推荐

  1. Java高级工程师——面试总结

    面试技巧 1.背熟你的简历 原因:面试的第一个问题,一般都是让你简单介绍下你自己,或者介绍一下你最近的项目,而一个面试者,如果连自己的简历都无法熟知,对里面提到的项目.技术都无法描述清楚的话,我想没有 ...

  2. linu_nginx_location语法

    location的作用是什么? 每个server中都需要配置location,通过location匹配域名后内容,再通过location响应同一个域名下不同请求 location语法 location ...

  3. j2e应用相关技术

    j2e应用相关技术 轻量级j2e应用以传统的jsp作为变现层技术,以一系列开源框架作为MVC层,中间件,持久层解决方案,并将这些开源框架有机组合在一起,使得j2e具有高度的可扩展性,可维护性. ser ...

  4. linkin大话设计模式--代理模式

    代理模式是一种应用非常广泛的设计模式,当客户端代码需要调用某个对象的时候,客户端并不关心是否可以准确的得到这个对象,他只要一个能够提供该功能的对象而已,此时我们就可以返回该对象的代理.总而言之,客户端 ...

  5. php中HTTP_X_FORWARDED_FOR 和 REMOTE_ADDR的使用

    1.REMOTE_ADDR:浏览当前页面的用户计算机的ip地址2.HTTP_X_FORWARDED_FOR: 浏览当前页面的用户计算机的网关3.HTTP_CLIENT_IP:客户端的ip 在PHP 中 ...

  6. HTML学习——标签

    1.</hr>效果: 2.<q>简短文本引用, <blockquote>长文本引用, 表象:为文本添加一个双引号,实:一个语义,引用别人的话语. 3.&nb ...

  7. centos配置单网卡为Trunk模式

    单网卡配置多IP(trunk模式)操作标准 1.linux的单网卡配置多IP的操作 下面为linux系统单网卡配置多IP(trunk模式)的操作步骤,系统平台为centos5.5.全部操作完成后,将实 ...

  8. django-rest-framework之请求与响应

    前言:在上一篇文章,已经实现了访问指定URL就返回了指定的数据,这也体现了RESTful API的一个理念,每一个URL代表着一个资源.当然我们还知道RESTful API的另一个特性就是,发送不同的 ...

  9. python学习1:程序元素和基本使用方法(跟随mooc学习)

    程序元素: 注释,缩进,变量,常量,表达式 输入,输出,分支,循环 示例程序,温度转换程序: #TempConvert.pyval=input("请输入带温度表示符号发温度值(例如:32C) ...

  10. Qt滑动条设计与实现

    没有找到Qt的滑动条控件,所以自己写了一个,能够实现亮度调节.音量调节等功能. 效果如下图: 主要设计思路: 有些调节功能如对比度是有负值的,所以需要能对滑动条的数值范围进行设置,不局限于0~100 ...