MFC ActiveX (ocx)控件的开发

article/2025/10/22 4:30:07
前言

ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。

   ActiveX控件是一种实现了一系列特定接口而使其在使用和外观上更象一个控件的COM组件。ActiveX控件这种技术涉及到了几乎所有的COM和OLE的技术精华,如可链接对象、统一数据传输、OLE文档、属性页、永久存储以及OLE自动化等。

   ActiveX控件作为基本的界面单元,必须拥有自己的属性和方法以适合不同特点的程序和向包容器程序提供功能服务,其属性和方法均由自动化服务的 IDispatch接口来支持。除了属性和方法外,ActiveX控件还具有区别于自动化服务的一种特性--事件。事件指的是从控件发送给其包容程序的一 种通知。与窗口控件通过发送消息通知其拥有者类似,ActiveX控件是通过触发事件来通知其包容器的。事件的触发通常是通过控件包容器提供的IDispatch接口来调用自动化对象的方法来实现的。在设计ActiveX控件时就应当考虑控件可能会发生哪些事件以及包容器程序将会对其中的哪些事件感兴趣并将这些事件包含进来。与自动化服务不同,ActiveX控件的方法、属性和事件均有自定义(custom)和库存(stock)两种不同的类 型。自定义的方法和属性也就是是普通的自动化方法和属性,自定义事件则是自己选取名字和Dispatch ID的事件。而所谓的库存方法、属性和事件则是使用了ActiveX控件规定了名字和Dispatch ID的"标准"方法、属性和事件。
   ActiveX控件可以使COM组件从外观和使用上能与普通的窗口控件一样,而且还提供了类似于设置Windows标准控件属性的属性页,使其能够在包容器程序的设计阶段对ActiveX控件的属性进行可视化设置。ActiveX控件提供的这些功能使得对其的使用将是非常方便的。本文下面即以MFC为工 具对ActiveX控件的开发进行介绍。
一、创建项目

1.打开VS2008新建MFC项目。这里我们取名为“ActiveXDemo 。
2.输入项目名称为“ActiveXDemo”和项目位置。
点击确定进行下一步。

3.运行时许可证默认不勾选。
如果勾上,生成时会多出一个文件.lic , 只有拥有许可的用户才可以调用ocx插件。继续下一步。




4.完成创建控件项目自动创建好MFC ActiveX程序框架。




其中 的 ACtiveXDemoApp 是 我 们 这 个 控 件 的 主 程 序 模 块 , 定 义 了 控 件的 注 册
( DllRegisterServer)、删除(DllUnregisterServer)等功能,一般不用动,如有需要我们可以
在其中的 InitInstance 和ExitInstance 中定义我们自己的初始化和终止操作代码,一般也就是一些资源的初始化和销毁工作。
CActiveXDemoCtrl 是控件类,我们要做的控件功能基本上就是要在这个类中实现。
需要提一下的是在这个类中重写了父类的 OnDraw 函数,有如下两句代码:
pdc->FillRect(rcBounds,
CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH)));
pdc->Ellipse(rcBounds);
也就是在控件上画了一个椭圆, 实际控件开发中可以根据功能需要修改重写这个函数来
绘制控件界面。
CActiveXDemoCtrlPropPage 是属性页类,这个类实现了一个在开发时设定控件属性的对话
框。
ActiveXDemoLib 是为客户程序提供本控件的属性、方法以及可能响应的事件的接口的。

二、添加属性,方法和事件

1.属性

属性是ACTIVEX控件想所有容器公开的数据成员。

如下图右键添加属性,属性变量类型我们选LONG,变量名为TimeStyle,其他默认。




2.方法

方法就是控件开放给用户使用的一些功能函数,类似于C++的类函数。开发人员可以提供自定义功能。

如下图所示我们添加一个方法Start(),其他默认。




如下图所示,我们可以从类视图清楚的看到我们添加的属性和方法名。


3.事件

ACTIVEX通过事件通知容器控件上发生了某些事情。将控件开发人员的某一特定操作识别为事件。

如下图所示,我们添加事件,添加事件顺序按照如图所示。事件名我们写OnSend ,内部名称习惯上修改为FIleOnSend.添加一个参数lpstrTime.





如下图,我们可以清楚地看到我们刚才添加的事件




start 事件中我们调用showcurrenttime 函数,函数实现已经给出。接着我们回调事件函数。

三、注册与反注册

1.唯一标识ID

如下图Classid 是该控件的唯一标识,这个我们可以在注册表里找到。




2.注册

命令行输入regsvr32 控件路径XXX



3.反注册

反注册控件regsvr32  -u  控件路径XXX


到此我们 OCX 控件制作就完成了。


http://chatgpt.dhexx.cn/article/Ut2tpd85.shtml

相关文章

开发基于MFC的应用程序

开发基于MFC的应用程序 本篇将介绍如何开发基于MFC的应用程序。 具体步骤如下: 一:启用VS2019编辑器。 二:点击文件—>新建—>项目 三:MFC应用—>下一步 四:添加项目名称—>创建 五:选择基于对…

MFC简介

1.API Wndows操作系统为我们编写Windows应用程序提供的接口函数----API&#xff0c; //Windows中播放声音的API函数 //PlaySound需要的头文件和库文件 #include <mmsystem.h> #pragma comment(lib, "WINMM.LIB")BOOL PlaySound(LPCSTR pszSound, HMODULE hmo…

C++ mfc

以下是我从其他网站中学的内容&#xff0c;后有相应的网站学习链接地址&#xff0c;可供学习 1.选择菜单项File->New->Project&#xff0c;弹出“New Project”对话框。 2.左侧面板中Installed Templated的Visual C下选择MFC&#xff0c;中间窗口中选择MFC Application&a…

MFC教程

以下是我从其他网站中学的内容&#xff0c;后有相应的网站学习链接地址&#xff0c;可供学习 1.选择菜单项File->New->Project&#xff0c;弹出“New Project”对话框。 2.左侧面板中Installed Templated的Visual C下选择MFC&#xff0c;中间窗口中选择MFC Application&…

MFC简要介绍

一、概念 MFC(MicrosoftFoundationClasses)是微软基础类库的简称&#xff0c;是微软公司实现的一个c类库&#xff0c;主要封装了大部分的windows API函数&#xff0c;vc是 微软公司开发的c/c的集成开发环境&#xff0c;所谓集成开发环境&#xff0c;就是说利用它可以编辑&#…

MFC入门小项目

之前学习MFC的时候就是三天打鱼两天晒网&#xff0c;什么都不记&#xff0c;脑子也不转&#xff0c;完全是代码的搬运工。这次又要从头开始&#xff0c;索性写个博客了。截至目前断断续续更了三十篇blog&#xff0c;文笔依然如此拙劣&#xff0c;实属羞愧。技术尚且肤浅&#x…

C++ MFC简介

介绍MFC之前&#xff0c;需要先介绍几个MFC的概念。 1) API Windows操作系统提供了各种各样的函数&#xff0c;以方便我们开发Windows应用程序。这些程序是Windows操作系统提供给应用程序编程的接口&#xff08;Application Programming Interface&#xff09;,简称为API函数…

一、MFC介绍

一、什么是MFC MFC(全称:Microsoft Foundation Classes),微软基础类库。他封装了Windows应用程序的各种API以及相关机制的c++类库。 1、特点: (1)开发效率高 (2)程序执行效率高,相对C# (3)迁移性差(仅支持Windows)相对QT 二、MFC程序介绍 1、MFC类库常用头…

VS2015之博大精深的MFC项目开发(一)

VS2015之博大精深的MFC项目开发&#xff08;一&#xff09; 第一章 MFC基础篇1、MFC01-2&#xff1a;Win32程序资源管理1.1 讲解MessageBox&#xff08;在windows中如何输出&#xff09;1.2 给我们的软件插入一个图标1.3 对话框程序是如何建立的&#xff08;在windows中如何输入…

简单MFC程序开发-C++反编译肉鸡养成

目录 一、需求 二、程序效果 效果1&#xff1a;鼠标左键点击&#xff0c;显示坐标 效果2&#xff1a;按下按键&#xff0c;显示键值 三、实现过程 1.创建MFC程序 2.修改添加功能 2.1 修改标题 2.2 增加鼠标消息 2.3 增加键盘消息 2.4 显示文字函数 2.5 编译生成exe 一…

MFC应用程序开发教程1

以下为本人学习笔记 原视频&#xff1a;黑马程序员MFC教程 一、基础概念 SDK&#xff1a;软件开发工具包&#xff08;Software Development Kit&#xff09;&#xff0c;第三方工具API&#xff1a;Windows擦欧总系统提供给应用程序编程的接口窗口&#xff1a;一个Windows应用…

MFC程序开发概述

MFC程序开发概述 一&#xff1a;MFC类库的产生与发展 在Microsoft推出Windows 3.0之后&#xff0c;Windows操作系统受到越来越多的人的青睐。但是不久&#xff0c;开发人员开发撰写Windows 应用程序是重复&#xff0c;厌烦的过程&#xff0c;而且效率极低。因为每一个窗口都需…

Vim撤消和重做操作

While editing text files with vim we can make some little mistakes or want to revert to the previous states. In Microsoft Word there is features rich undo and revert functions. The similar undo and revert functionalities provided by vim too. 在用vim编辑文本…

idea如何使用git指令

&#xff08;1&#xff09;、打开setting,直接搜git (2)、点一下text 如果显示成功就不用管了&#xff0c;但如果失败就要重新设置一下目录&#xff1a; &#xff08;3&#xff09;、找到自己设置gitee ssh目录&#xff1a; 这里我们是不需要用.git对.idea进行管理的&#xff…

idea操作git流程(图文教程)

idea是jetbrain的一款java编辑器&#xff0c;jetbrain全家桶的编辑器都很好用&#xff0c;接下来就以图文的方式介绍&#xff0c;idea如何操作git 1. 首先你需要在自己电脑上安装一个Git&#xff0c;安装git的流程网上应该很多了&#xff0c;这里就跳过了&#xff0c;后续操作…

IDEA中使用Git的教程

&&前期准备工作 &配置git &配置Github 1.远程创建好GitHub仓库 2.打开Terminal窗口 3.创建README.md和.gitignore文件 $touch README.md $touch .gitignore xml .gitignore内容如下: *.class package files *.war *.ear kdiff3 ignore target/ ec…

在Idea中使用Git

一.在Idea中配置Git 安装好IntelliJ IDEA后&#xff0c;如果Git安装在默认路径下&#xff0c;那么idea会自动找到git的位置&#xff0c;如果更改了Git的安 装位置则需要手动配置下Git的路径。选择File→Settings打开设置窗口&#xff0c;找到Version Control下的git选 项&…

Git的理解以及在IDEA中的使用

目录 什么是版本控制 什么是Git 什么是GitHub Git、GitHub、Gitee的区别 git与GitHub GitHub和Gitee 下载安装Git IDEA中配置Git ​编辑 Gitee的使用 IDEA中使用 添加Gitee账号&#xff1a; 分享项目 设置仓库名字 更新项目 小组团队开发 成员拉取项目 数据库…

IDEA 中 Git的使用

1、Git简介 Git是目前流行的分布式版本管理系统。它拥有两套版本库&#xff0c;本地库和远程库&#xff0c;在不进行合并和删除之类的操作时这两套版本库互不影响。也因此其近乎所有的操作都是本地执行&#xff0c;所以在断网的情况下任然可以提交代码&#xff0c;切换分支。Gi…

IntelliJ IDEA 之 Git 使用

文章目录 1. 本地安装 Git2. IDEA 配置 Git3. 首次检出项目4. 项目分支创建5. 项目分支切换6. 项目刷新分支7. 分支代码提交8. 开发分支合并主分支代码9. 主分支合并开发分支代码10. 代码提交记录进行合并操作11. 常用操作的快捷方式12. 开发分支部分合并到主分支13. 主分支被强…