MFC ActiveX的创建和调用

用VS2019开发一个简单的ActiveX(MFC)控件 一、创建控件 管理员身份运行VS2019 创建一个新的项目:模板为 MFC ActiveX 控件 创建新项目:testActiveX 直接下一步 勾选:在“插入对象”对话框中可用 打开项目属性 修改项目属性:MFC的使用修改为【在静态库中使用MFC】 二、添加界面显示 在 资源视图 中插入对话框 delete 掉 【确定】【取消】,然后修改對話框屬性: Border改為None, Control改為Ture, ID改為IDD_MAIN_DIALOG Style改為Child Sys 阅读详情

一、创建

两种方式:

第一种:创建“MFC ActiveX 控件”工程(这种方式建立的ActiveX控件只能在windows操作系统下运行,还必须在windows操作系统下安装c++依赖库安装包,因为MFC是建立在微软的c++动态库的基础上的,若不安装相关库则需要设置为静态MFC Dll编译)

第二种:创建“ATL 项目”。由于使用ATL开发ActiveX控件需要了解com技术,对程序员的要求也较高,开发时间也较长。

本文采取方法1.


具体方式:

1.文档结构:

使用向导创建完工程可以看到自动生成了三个类,CMFCActiveXControl1App,CFIT_ActiveXControlCtrl和CFIT_ActiveXControlPropPage

还有对外接口定义文件MFCActiveXControl1.idl


可以打开上面三个类的头文件及cpp文件,发现它们都是派生类。

CMFCActiveXControl1App:cpp文件中定义了DllRegisterServer和DllUnregisterServer,可以发现ActiveX的注册和反组册都与该类有关。

CFIT_ActiveXControlCtrl:可以发现该头文件中声明了消息映射(让ActiveX控件程序可以接受系统发送的事件通知,如窗体创建和关闭事件),调度映射(让外部调用程序(包含ActiveX的容器)可以方便地访问ActiveX控件的属性和方法),事件映射(让ActiveX控件可以向外部调用程序(包含ActiveX的容器)发送事件通知)。也就是说对ActiveX控件的窗口操作都将在这个类中完成,包括ActiveX控件的创建,重绘,以及在此类中创建可视MFC窗体。

CFIT_ActiveXControlPropPage:显示ActiveX控件的属性页的


让我们来看看最重要的部分:对外接口定义文件MFCActiveXControl1.idl,代码如下:


这个文件可以分为四个部分来看:

1.1是TMFCActiveXControl1.Lib这个库信息

1.2第二部分是调度映射的接口信息,该接口信息包含了属性(如控件背景色)和对外方法

里面定义了一个方法AboutBox(),该方法就可以被外部程序调用,在该接口里定义的函数都是纯虚函数,这些函数的实现都是在MFCActiveXControl1中完成的,MFC通过底层的封装,让TMFCActiveXControl1类继承这个接口,实现函数。

1.3第三部分是事件映射的接口信息

1.4第四部分是类的信息,其中uuid就是ActiveX控件注册到注册表的classid,它是ActiveX注册后在系统内的唯一标识,WEB网页就是使用这个ID加载ActiveX控件的



2.实现封装

定义调度映射和事件映射方法,提供给外部调用者使用

二、调用

1.注册ActiveX控件

按照上面的步骤已经完成简单ActiveX控件(无窗体界面的控件)的编写,重新生成后会在Debug下生成一个MFCActiveXControl1.ocx的文件,使用windows的dos窗口可以注册这个ActiveX控件

步骤:

regsvr32  c:\.......\.ocx

反注册命令:regsvr32  c:\.......\.ocx -u

有两种情况会导致控件注册失败:

第一种:使用非Administrator用户登入系统会由于权限不足而无法注册com组件,这时候就必须使用Administrator用户登入操作系统

第二种:ActiveX控件所依赖的dll库被程序给占用,就会导致注册失败,解决办法是将正在运行的程序关闭就可以

2.测试ActiveX控件的方法

有三种方式:

第一种:使用html网页来测试

classid在控件成功注册后也可以通过注册表查找,位置在“HKET_CLASSES_ROOT”中

第二种:建立Mfc应用程序,类向导--》添加MFC ActiveX的类--》查找文件--》导入类

第三种:TstCon.exe


MFC有三个选项:MFC ActiveX控件、MFC应用程序、MFC DLL,如何选择? 标准控件:这些是由操作系统或开发框架预定义的控件,如按钮、文本框等。它们通常是现成的,可以直接使用并提供基本的用户界面功能。自定义控件:这些是开发人员根据特定需求创建的控件,可以扩展标准控件的功能或提供全新的功能和外观。MFC ActiveX控件:选择这个选项如果您需要创建一个可嵌入到其他应用程序中的控件。MFC应用程序:选择这个选项如果您需要创建一个独立的Windows桌面应用程序。MFC DLL:选择这个选项如果您需要创建一个动态链接库以便其他应用程序调用,或者实现插件功能。 阅读详情

相关推荐

【VS开发】使用MFC创建并调用ActiveX控件

使用MFC创建并调用ActiveX控件 今天做了一下ActiveX的使用测试,总结一下: 首先使用MFC创建一个activeX的控件譬如ActiveXTest,编译成ocx并注册,然后另外编写一个测试程序来调用该控件,发现有几种方式:   1:使用project-->Add to Project-->Components and Controls, 然后选择要加入的ocx或

ZhangPY的专栏 5126

在MFC “共享MFC 规则DLL”中(创建MFC DLL中选第一个),使用MFC对话框注意问题

在MFC “共享MFC 规则DLL”中(创建MFC DLL中选第一个),使用MFC对话框注意问题(VS2005中编译通过) 由于需求,需要把VC的基于对话框工程移到dll中,因此创建了“共享MFC 规则DLL”, 并提供相关接口(导出相关函数), 在这些函数的功能有:创建对话框,显示对话框等等。 由于以前用VC在为别的开发语言写Dll时都是创建Win32 Dll的(一般没用MF

cay22的专栏 3011

PCB印刷电路缺陷检测实战:从数据集准备到模型训练全流程解析

本文详细解析了PCB缺陷检测从数据集准备到模型训练的全流程。重点介绍了PKU-Market-PCB数据集的特点与下载方法,并提供了数据格式转换、模型选择(如YOLOv8)与训练配置的实战代码。针对PCB小目标检测的难点,文章给出了数据分析和模型优化的具体策略,帮助读者构建高效的缺陷检测系统。

weixin_29065791的博客 547

MFC ActiveX控件的3种调用方式

导读 1、导入ActiveX控件,拖放ActiveX控件方式 2、动态创建ActiveX控件 3、COM调用方式 1、导入ActiveX控件,拖放ActiveX控件方式 1、工具箱添加ActiveX控件,菜单“工具”-》“选择工具箱项” 选择“COM组件”,在你想要选择的控件上面打钩 工具箱最下面就多了对应ActiveX控件 拖到界面即可使用 笔者按:但是这样的办法有个弊端,电脑必须得安装注册这个ocx控件,不然对话框exe就打不开了。 2、动态创建ActiveX控件 类向导,快.

tajon1226的专栏 2117

【物理模拟】PBD算法详解

参考MatthiaMuller的十分钟物理(他就是PBD算法的发明者)

beidou111的博客 9499

Ambari 3.0.0 + BigTop 3.3.0 源码编译与集群部署指南(Kylin V10 / aarch64)

仅仅是针对“应用商店目录(Applications Catalog)”的一个外围附属子模块(它不是 YARN 监控大盘,不影响 YARN UI 网页的主体使用),我们可以采用。自带的 Node 二进制是 x86_64 版本,在 ARM64(aarch64)容器上无法执行(Exit value: 126)。:Ambari Server/Agent 使用 JDK 17,BigTop 大数据组件(Hadoop/HBase/Spark 等)使用 JDK 8。,源码中包含 x86 特定的原生二进制文件。

amumu1992的博客 491

VS2015 MFCActiveX使用对话框调用另外一个ActiveX控件

MFCActiveX控件的用途广泛,生成的文件就是在网页编程里使用比较多的OCX控件,在网页的object标签里可以调用OCX控件。那么比如我想制作一个OCX控件,在控件里加载一个网页这种该如何实现了。熟悉MFC的应该知道,MFC里可以直接使用webbrowser这个ActiveX控件,使用webbrowser可以很方便的加载网页。下面讲解该如何实现这一功能。 首先使用vs2015,新建一个MFC......

Keras深度学习 1万+

Stm32L0 STM32CUBE中UART和使用LPUART1以及串口不进中断问题解决

/* 开启串口1中断 */ LL_USART_EnableIT_RXNE(LPUART1); /* 开启串口2中断 */ LL_USART_EnableIT_RXNE(USART2);

シ❤゛甜虾的个人博客 7687

MFC ActiveX 注册调用海康摄像头OCX控件

mfc注册ocx控件

bang_pang的博客 2613

教程: 将 SolidWorks 设计导出为 ROS 的 URDF

请按照以下步骤应用自定义徽标纹理:创建徽标材质文件:techniquepass材质名称:测试/材质颜色属性:环境、漫反射、镜面和发射都设置为白色(1 1 1 1),这意味着该材质看起来完全是白色的。纹理 在表面应用纹理图像 logo.png。将材质文件复制到 gazebo matrial:复制徽标图像:将 “徽标 ”替换为机器人上徽标所在位置的适当参考值。按照以上步骤,您就可以在 Gazebo 中为机器人添加自定义材质和纹理,包括徽标。

机器人控制与仿真应用 2459

通信算法之267 : DJI无人机 云哨 DroneID 640ms

消费级无人机可以用于高级航拍、物流和人道主义救援等等。但是其广泛使用给安全、安保和隐私带来了许多风险。例如,攻击方可能会使用无人机进行监视、运输非法物品,或通过侵入机场上方的封闭空域造成经济损失。为了防止恶意使用,无人机制造商采用多种对策来强制安全可靠地使用无人机,例如对速度和高度施加软件限制,或使用地理围栏实施禁飞区。作为对传统对策的补充,市场领导者大疆(DJI)为无人机实施了一种称为 DroneID 的跟踪协议,该协议旨在将无人机及其操作员的位置传输给授权实体,例如执法部门或关键基础设施的运营商。

leegang12的专栏 3309

使用MFC开发ActiveX(ocx)控件

作者:  中国电波传播研究所青岛分所 郎锐 时间:  2004-03-09 出处:  yesky 一、前言 二、建立工程框架 三、属性、方法以及事件的添加 四、实现属性表 五、在包容程序中使用ActiveX控件 六、小结   前言    ActiveX控件是一种实现了一系列特定接口而使其在使用和外观上更象一个控件的COM组件。ActiveX控件这种技术涉及到

有梦,有追求 1270

基于ResNet + LLM大语言模型的分类识别系统设计与实现,Web前后端分离,Django+vue3+AI助手模块+ResNet50算法+LLM 联动+Element Plus等技术,全网独发

分类识别任务是计算机视觉中的重要任务,广泛应用于智慧校园分类、智慧农业、智慧生活场景分类等领域。常见的分类模型有 VGGNet、ResNet 、MobileNet 、ConvNeXt、DenseNet、ViT、Swin Transformer、YOLOv8/11/26。本项目结合 ResNet分类识别算法 + LLM大语言模型联动 ,使用 Django + Vue3,构建了一个通用的 Web 前后端系统,用户端 + 管理端 ,便于用户操作检,不仅可以用于大论文的工作量展示,还可以作为毕业设计。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 760

使用MFC创建并调用ActiveX控件

使用MFC创建并调用ActiveX控件 今天做了一下ActiveX的使用测试,总结一下: 首先使用MFC创建一个activeX的控件譬如ActiveXTest,编译成ocx并注册,然后另外编写一个测试程序来调用该控件,发现有几种方式:   1:使用project-->Add to Project-->Components and Controls, 然后选择要加入的ocx或

Dragon-IT 1770

YOLOv11 改进 - 特征融合 | 小目标检测救星:DySample动态上采样减少特征丢失

本文介绍了超轻量且高效的动态上采样器DySample与YOLOv11的结合,以解决传统上采样器工作负载大、应用场景受限的问题。DySample从点采样角度构建上采样,绕过动态卷积,使用PyTorch标准内置函数实现,无需定制CUDA包,能大幅减少参数、FLOPs等资源消耗。我们将DySample代码集成进YOLOv11。实验脚本显示,结合DySample的YOLOv11在多个密集预测任务中或表现出色。

魔改工程师的博客 1417

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

MFC ACTIVEX的创建与调用

一:同样的,使用创建向导创建MFC ACTIVEX 这里直接使用vs2013默认的方式直接完成创建就可以了。 二:创建完ActiveX控件之后,需要为控件里面添加一些消息,事件,方法等用来完成这个ActiveX的功能。 参考https://blog.youkuaiyun.com/guo_lei_lamant/article/details/79714851 消息:一般是系统发送过来的消息,举...

224

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

初学MFC及MFC DLL、MFC ACTIVEX中接口的创建与调用

MFC的学习主要借鉴于 http://www.jizhuomi.com/software/257.html MFC消息映射机制的内容 什么是消息:窗口消息一般由三个部分组成:1.一个无符号整数,是消息值;(2)消息附带的WPARAM类型的参数;(3)消息附带的LPARAM类型的参数。其实我们一般所说的消息是狭义上的消息值,也就是一个无符号整数,经常被定义为宏。 消息映射机制:...

358

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

MFC学习 - 关于如何创建带有界面的 ActiveX 控件

创建添加对话框的Activex 使用MFC创建并调用ActiveX控件

guo_lei_lamant的博客 1812

JavaScript调用ActiveX控件

一.实现MFC ActiveX控件 1.在VS下新建一个MFC ActiveX项目,这里命名为ActiveXDeme。如下图所示: 2.创建成功后,在VS菜单栏里点“视图"----"类视图”。 3.选中_DActiveXDemo接口,右键选择“添加”----“添加方法”,弹出添加方法向导,如下图所示: 这里添加一个SendMsg的方法,参数为BSTR pMSg,添加

firehood的专栏 4918

创建ActiveX简单步骤

1.新建项目VC++ MFC ActiveX 项目名TestMfcDebug 默认选项生成文件 2.在菜单类中选择视图  类视图 点开 TestMfcDebug DTestMfcDebug右键 添加方法 确定参数 和方法名 例如 long fuck(long add); 3.点击菜单栏 项目  属性 选择配置属性 常规 配置类型 选择 静态库 MFC的使用 选择 在静态库中使

gacmy的专栏 776

ActiveX控件使用总结

开发环境:vs2015 上网找了很多关于这方面的资料进行学习。 终于给我找到几个比较好的文章。 因为知识比较老。一般是接触硬件和底层的人才会去学习。 参考文章:这是两个比较好的文章 ActiveX控件的基本操作方法以及如何在VS2010下使用控件 https://blog.youkuaiyun.com/u014028070/article/details/38424611 c++ ActiveX基础1:这个讲了如何提供外部接口调用 https://blog.youkuaiyun.com/qq445803843/article/de

Happinessคิดถึง的博客 5837

mfc调用activex

今天做了一下ActiveX的使用测试,总结一下: 首先使用MFC创建一个activeX的控件譬如ActiveXTest,编译成ocx并注册,然后另外编写一个测试程序来调用该控件,发现有几种方式: 1:使用project-->Add to Project-->Components and Controls, 然后选择要加入的ocx或者dll,系统会自动生成.cpp和.h文件.并...

爬行的菜鸟的博客 1434

在Js调用ActiveX方法

最近项目接触到ActiveX。使用ActiveX嵌入到浏览器中,一方使用socket和手机端进行,一方使用https和服务器进行交互,这边文章 介绍最基本的ActiveX的创建和使用。 我使用的是MFC ActiveX ,第一步创建MFC ActiveX工程: 我选择 的是无界面AxtiveX,你可以根据需要进行创建。 第二步创建对外的接口,供Js调用。 打开类视图 ,点击

4318

mfc编程 孙鑫_MFC(ActiveX编程,孙鑫C++第十八讲笔记整理)

一:在VB中调用X控件,添加方法project->Add components。另外可以用Object Browser来查看控件二:在VC中创建X控件1.新建一个X工程名为Clock,注意一个文件中可以包含多个控件。2.保持缺省设置,完成。注意它生成的三个类,以及相关的接口。3.运行它。选择TSTCON32.exe作为容器。4.选择Insert Control,此时我们可以看到,它画了一个椭...

weixin_42298881的博客 611
上一篇: C++类静态成员与类静态成员函数
下一篇: VS2015实用小技巧---设置启动依赖项
ruby_doudou
博客等级 码龄12年 3粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值