当前位置: 首页 > news >正文

使用MFC ActiveX开发KingScada控件(OCX)

最近有个需求,要在KingScada上面开发一个控件。
原来是用的WinCC,WinCC本身是支持调用.net控件,就是winform控件的,winform控件开发简单,相对功能也更丰富。奈何WinCC不是国产的。
话说KingScada,国产组态软件里面,做的比较好的了,但是不支持.net控件,只支持OCX,实际上就是ActiveX,一个已经被世人遗忘的玩意。

一、啥是ActiveX

        实际就是开发一个自定义系统组件,类似按钮,下拉框,文本框。开发完,还得在系统注册一下才能用。注册指令regsvr32 OCX控件文件

二、开发准备

        首先需要使用VS,我这里使用的VS2017。VS需要安装MFC库,能看出来MFC已经被VS抛弃了,在VC6的时代,MFC是核心功能。现在MFC需要在单个组件,往下拉很久才能看到。见下图。真不容易找。

三、创建项目

见下图,找到MFC/ATL,选中ActiveX控件。位置换一个喜欢的位置就行了。

下面这个图,选默认就行了,不用动。

 下一步,最好还是直接跳过。不要修改默认配置。

创建好以后,右侧是项目的结构。MyControl.cpp是控件的入口文件,一般不用动。

MyControlCtrl.h和MyControlCtrl.CPP是ActiveX控件的代码。但是这个控件没有资源文件,就没法可视化设计,必须用代码创建子控件。

propPage是控件属性页,实际不用这个也可以,用普通的Dialog也可以。 

RC文件里包含两个对画面,图表,字符串等。这两个Dialog可以双击可视化编辑。 

属性页可视化编辑见下图。目前这个属性页没啥用。 


四、运行项目看效果

效果如下,报了个错,提示没有权限,但是能看出来已经生成了MyControl.OCX

 可以用管理员身份的CMD去运行这个指令,见下图:

成功以后,怎么用这个控件呢?

五、KingScada加载控件

点组态王,对象,OCX控件

然后找到控件名称,点击确定就行了。

 控件上去的效果,见下图。目前是啥代码都没有写,默认就化一个圆圈。

 六、随便加点功能

首先加一个文字输出,见下图:

变成了这个样子。说明代码没有问题。 

七、添加一个按钮

光绘图是不行的,需要增加子控件。MFC本身可以可视化调整窗体,但是这个地方不行。必须手动创建。

按钮是CButton,首先需要在控件头文件里面声明,见下图。初始化需要写在ondraw里面,但是只能初始化一次,用ready来判断是否初始化完成。init函数里面完成对按钮的初始化。

 CPP文件对应添加的内容如下,主要是初始化,调用,以及释放资源。

效果见下面图: 

八、点击事件

在头文件里面增加一个事件函数声明,声明在protected下面

afx_msg void OnBtnClick();//声明一个事件函数 

在cpp文件实现:

绑定事件,见下图,在MESSAGE_MAP里面绑定 

九、最后是测试

由于我KingScada没有加密狗,所以用Winfform 测试。效果图下:

 最后补充一下,这个控件在winform,浏览器,KingScada,KingView,WinCC等支持OCX的地方都可以使用。

但是这仍然是一个被淘汰的技术,希望KingScada尽快支持.net,获取其他方式进行插件开发。

http://www.dtcms.com/a/109731.html

相关文章:

  • Mac Apple silicon如何指定运行amd64架构的ubuntu Docker?
  • 浅浅尝试Numpy的函数:
  • 【数据结构】排序算法(中篇)·处理大数据的精妙
  • git commit Message 插件解释说明
  • Ubuntu服务器挂载之前的数据硬盘
  • C++中的链表操作
  • 网络运维学习笔记(DeepSeek优化版)027 OSPF外部路由计算
  • GaussDB数据库SQL开发实践与性能优化全解析
  • 汇编学习之《jcc指令》
  • Vue 数据传递流程图指南
  • CompletableFuture:核心方法、应用场景
  • 面向对象软件开发与中国哲学的关系
  • Java面试题及答案整理( 2025年 4 月最新版,持续更新)
  • 每天10分钟!自动抓取并生成每日简报的AI方案
  • 从零开始训练Codebook:基于ViT的图像重建实践
  • 认识 Promise
  • 三、GPIO
  • 【上新了】深入理解 Java 虚拟线程:与传统线程的对比及应用
  • Vue2 监听器 watcher
  • qt tcpsocket编程遇到的并发问题
  • Spring Boot应用中实现Jar包热更新的实践指南
  • macOS设置定时播放眼保健操
  • Java的数据库编程——JDBC基础
  • 2025年AI技术十大趋势深度解析:从实验室到主流应用
  • 移动端六大语言速记:第6部分 - 错误处理与调试
  • CAS:47623-98-3,DiSBAC2(3)一种慢反应的膜电位敏感探针
  • 进程和内存管理
  • 浅谈Tomcat数据源连接池
  • sql server数据库可疑修复
  • 提取嘉立创3D封装