MFC有三个选项:MFC ActiveX控件、MFC应用程序、MFC DLL,如何选择?

深耕AI:互联网行业 算法研发工程师
目录
MFC ActiveX 控件
控件的类型
标准控件
自定义控件
ActiveX控件
MFC ActiveX控件
标准/自定义控件
MFC ActiveX控件分类
3种MFC如何选择?
MFC ActiveX控件
MFC 应用程序
MFC DLL
总结
举例说明

MFC ActiveX 控件
-
- 用途:用于创建ActiveX控件,这些控件可以嵌入到各种容器(例如网页、Microsoft Office应用程序、其他软件应用程序)中。
- 场景:如果您的项目需要开发一个可以在不同软件环境中复用的控件,或者需要与其他基于COM的应用进行交互,这是一个合适的选择。
在软件开发中,“控件”是指用户界面中的元素或组件,它们可以接受用户输入或显示信息。控件可以是按钮、文本框、复选框、列表框、滑动条等。它们用于构建应用程序的图形用户界面(GUI),使用户能够与应用程序交互。
控件的类型
标准控件
标准控件,是由操作系统或开发框架(如MFC、Windows Forms、WPF等)预定义和提供的控件。它们通常包括基本的用户界面元素,开发人员可以直接使用这些控件来构建应用程序的界面。

- 按钮(Button):用于触发事件或操作。
- 标签(Label):用于显示文本。
- 文本框(TextBox):用于输入或显示文本。
- 复选框(CheckBox):用于表示二进制状态(选中或未选中)。
- 单选按钮(RadioButton):用于在一组选项中进行单一选择。
- 列表框(ListBox):用于显示列表项,用户可以选择其中的一项或多项。
- 组合框(ComboBox):组合了文本框和列表框的功能,用户可以输入文本或从下拉列表中选择。
- 滚动条(ScrollBar):用于滚动内容。
- 滑动条(Slider):用于选择数值范围内的值。
- 进度条(ProgressBar):用于显示任务的进度。
- 选项卡控件(TabControl):用于在同一窗口中显示多个选项卡页面。
- 菜单(Menu):用于提供用户操作的菜单项。
自定义控件
自定义控件,是开发人员根据特定需求创建的控件,它们不一定由操作系统或开发框架直接提供。自定义控件可以扩展标准控件的功能或提供完全新的功能和外观。
- 自定义按钮:一个具有特殊样式或行为的按钮,例如带有图标和动画效果的按钮。
- 图表控件:用于显示各种类型的图表(如柱状图、折线图、饼图等)。
- 自定义日期选择器:具有特定功能和外观的日期选择控件。
- 富文本编辑器:用于显示和编辑带有格式化文本的控件,比标准的文本框功能更强大。
- 自定义列表控件:提供特定布局和行为的列表项展示,例如带有图标、描述和操作按钮的复杂列表项。
- 地图控件:显示和交互地理信息的控件,例如Google Maps嵌入控件。
- 多媒体控件:用于播放音频、视频的控件,具有特定的控制和显示功能。
ActiveX控件
MFC ActiveX控件实际上是一个技术实现的分类,而不是控件本身的类型分类。在讨论标准控件和自定义控件时,我们主要关注的是功能和用途,而MFC ActiveX控件则关注的是实现方式和技术。
MFC ActiveX控件

MFC ActiveX控件是一种使用Microsoft Foundation Class (MFC) 库创建的ActiveX控件。ActiveX是一种软件组件技术,允许在不同应用程序之间共享功能。这种控件可以嵌入在其他应用程序(如网页、Microsoft Office应用)中,并提供特定的功能。
MFC ActiveX控件,本质上是控件的一种实现技术。它可以用来创建具有标准控件功能的控件或自定义控件功能的控件。因此,MFC ActiveX控件并不单独归类为标准控件或自定义控件,而是一个可以实现这两种控件的工具和技术。
标准/自定义控件
- 标准控件:这些是由操作系统或开发框架预定义的控件,如按钮、文本框等。它们通常是现成的,可以直接使用并提供基本的用户界面功能。
- 自定义控件:这些是开发人员根据特定需求创建的控件,可以扩展标准控件的功能或提供全新的功能和外观。
MFC ActiveX控件分类
MFC ActiveX控件本身可以是标准控件的实现,也可以是自定义控件的实现:
- 标准控件的实现:可以使用MFC创建一个ActiveX控件,该控件提供类似于标准控件的功能,如一个按钮控件或一个文本框控件,但它可以被嵌入到网页或其他应用程序中。
- 自定义控件的实现:也可以使用MFC创建一个高度定制的ActiveX控件,提供特定的功能和外观,这在标准控件中是找不到的。
问题:为什么MFC ActiveX控件不单独归类为标准控件或自定义控件?
实现方式的不同:MFC ActiveX控件是一种实现方式,关注的是使用MFC库来创建可以嵌入在其他应用程序中的控件。
用途的多样性:MFC ActiveX控件可以实现标准控件的功能,也可以实现自定义控件的功能,因此它不局限于标准控件或自定义控件的分类。
3种MFC如何选择?
MFC ActiveX控件
- 选择这个选项时,您是在创建一个可以嵌入到其他应用程序中的控件。比如,您可以创建一个ActiveX控件,用于在Excel中显示特定类型的图表,或者在网页中嵌入一个视频播放器。
举个例子
如果您需要开发一个用户可以嵌入到他们的网页中的日历控件,您会选择“MFC ActiveX控件”项目类型。开发完成后,用户可以将这个日历控件嵌入到他们的网页中,从而在网页上显示和操作日历。
MFC 应用程序
-
- 用途:用于创建基于MFC的独立Windows应用程序。MFC(Microsoft Foundation Class Library)提供了一个用于创建Windows应用程序的C++类库。
- 场景:如果您需要开发一个完整的桌面应用程序,如文本编辑器、数据库管理工具或任何其他独立的Windows应用程序,这是一个理想的选择。
MFC DLL
-
- 用途:用于创建动态链接库(DLL),这些库可以被其他应用程序调用。MFC DLL可以是静态MFC DLL(使用静态链接的MFC库)或动态MFC DLL(使用动态链接的MFC库)。
- 场景:如果您的项目需要创建一个可复用的库,其他应用程序将会调用这个库中的功能,或者如果您的项目需要实现插件架构,这是一个合适的选择。
总结
- MFC ActiveX控件:选择这个选项如果您需要创建一个可嵌入到其他应用程序中的控件。
- MFC应用程序:选择这个选项如果您需要创建一个独立的Windows桌面应用程序。
- MFC DLL:选择这个选项如果您需要创建一个动态链接库以便其他应用程序调用,或者实现插件功能。
举例说明
- MFC ActiveX控件:开发一个自定义的图表控件,可以嵌入到Excel中使用。
- MFC应用程序:开发一个文本编辑器,类似于Notepad。
- MFC DLL:开发一个图像处理库,其他应用程序可以调用这个库中的图像处理功能。
根据我们的项目需求,选择合适的选项,可以更好地实现项目目标。
相关文章:
MFC有三个选项:MFC ActiveX控件、MFC应用程序、MFC DLL,如何选择?
深耕AI:互联网行业 算法研发工程师 目录 MFC ActiveX 控件 控件的类型 标准控件 自定义控件 ActiveX控件 MFC ActiveX控件 标准/自定义控件 MFC ActiveX控件分类 3种MFC如何选择? MFC ActiveX控件 MFC 应用程序 MFC DLL 总结 举例说明…...
边缘概率 | 条件概率
关于什么是边缘概率分布和条件概率分布,在理论上,我自己也还没有理解,那么现在就根据我学习到的理解方式来记录一下,有错误指出,请大家指正!!! 例如,一个箱子里有十个乒乓…...
深入浅出:现代JavaScript开发者必知必会的Web性能优化技巧
亲爱的读者们,欢迎来到本期博客。今天,我们将深入探讨JavaScript开发者在日常工作中如何提升Web性能。在快节奏的Web开发世界中,性能优化至关重要。本文将分享一些实用技巧,帮助你构建快速、高效的Web应用。 1. 使用CDN加速资源加…...
【S32K3 RTD LLD篇5】K344 ADC SW+HW trigger
【S32K3 RTD LLD篇5】K344 ADC SWHW trigger 一,文档简介二,ADC SW HW 触发2.1 软硬件平台2.2 SWADC 软件触发2.3 SWBCTUADC 软件BCTU触发2.4 PITTRIGMUXADC 硬件PIT TRIGUMX触发2.5 EMIOSBCTUHWADC硬件EMIOS BCTU触发2.6 EMIOSBCTUHW LISTADC硬件EMIOS …...
TransFormer 视频笔记
TransFormer BasicsAttention单头注意力 single head attentionQ: query 查寻矩阵 128*12288K key matrix 128*12288SoftMax 归一 Value matrix 12288*12288 MLP Bas…...
前端的混合全栈之路Meteor篇(三):发布订阅示例代码及如何将Meteor的响应数据映射到vue3的reactive系统
Meteor 3.0 是一个功能强大的全栈 JavaScript 框架,特别适合实时应用程序的开发。它的核心机制之一就包括发布-订阅(Publish-Subscribe)模型,它允许服务器端发布数据,客户端订阅并实时更新。本文将介绍如何在 Meteor 3…...
自动驾驶系列—颠覆未来驾驶:深入解析自动驾驶线控转向系统技术
🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…...
Webstorm 中对 Node.js 后端项目进行断点调试
首先,肯定需要有一个启动服务器的命令脚本。 然后,写一个 debug 的配置: 然后,debug 模式 启动项目和 启动调试服务: 最后,发送请求,即可调试: 这几个关键按钮含义: 重启…...
VUE前后端分离毕业设计题目项目有哪些,VUE程序开发常见毕业论文设计推荐
目录 0 为什么选择Vue.js 1 Vue.js 的主要特点 2 前后端分离毕业设计项目推荐 3 后端推荐 4 总结 0 为什么选择Vue.js 使用Vue.js开发计算机毕业设计是一个很好的选择,因为它不仅具有现代前端框架的所有优点,还能让你专注于构建高性能、高可用性的W…...
一、Spring Boot集成Spring Security之自动装配
Spring Boot集成Spring Security之自动装配介绍 一、实现功能及软件版本说明二、创建Spring Boot项目三、查看自动装配配置类四、自动装配配置类之SecurityAutoConfiguration1、SecurityAutoConfiguration部分源码2、主要作用3、SpringBootWebSecurityConfiguration3.1、Spring…...
计数相关的题 Python 力扣
2284. 最多单词数的发件人 给你一个聊天记录,共包含 n 条信息。给你两个字符串数组 messages 和 senders ,其中 messages[i] 是 senders[i] 发出的一条 信息 。 一条 信息 是若干用单个空格连接的 单词 ,信息开头和结尾不会有多余空格。发件…...
Express内置的中间件(express.json和express.urlencoded)格式的请求体数据
目录 Express内置的中间件 express.json 中间件的使用 express.urlencoded 中间件的使用 express.urlencoded([options]) 解析req.body的兼容写法 Express内置的中间件 自 Express 4.16.0 版本开始,Express 内置了 3 个常用的中间件,极大的提高了 …...
cmakelist加载Qt模块
Qt编程中,cmakelist会自动添加Core,Gui,Widgets模块,有时需要添加新的Qt的模块。在命令find_package中搜索要新增的模块,在命令target_link_libraries中添加要新增的模块。 比如要使用QUiLoader类,要增加对…...
8-2.Android 任务之 CountDownTimer 编码模板(开启计时器、取消计时器)
一、CountDownTimer 1、概述 CountDownTimer 是 Android 中一个用于执行定时操作的类 CountDownTimer 主要应用于在指定时间段内完成某项任务,或者每隔一段时间触发某项任务 2、使用步骤 创建 CountDownTimer:创建 CountDownTimer 就是创建它的匿名…...
Servlet的生命周期及用户提交表单页面的实现(实验报告)
一、实验目的、要求 1. 掌握Servlet的定义,即Servlet是运行在服务器端的Java程序,用于扩展服务器的功能。 2. 学习和掌握在开发环境中搭建Servlet应用所需的工具,如Tomcat服务器、IDEA等。 二、实验内容 根据本章所学知识,实验…...
【Router】路由功能之IP过滤(IP Filter)功能(基于端口)介绍及实现
IP过滤(IP Filter) IP Filter是一种通过对网络数据包中的 IP 地址进行分析和筛选,以实现对网络流量的控制和管理的技术。 IP过滤(IP Filter)作用 安全防护 可以阻止来自特定 IP 地址或 IP 地址范围的恶意攻击、非法访问等,增强网络的安全性。 流量管理 根据不同的 IP …...
数据结构_2.2、顺序表插入删除查找
1、线性表的顺序存储表示定义: 线性表:是具有相同数据类型的n (n≥0)个数据元素的有限序列 顺序表:用顺序存储的方式实现线性表 顺序存储:把逻辑上相邻的元素存储在物理 位置上也相邻的存储单元中&#…...
嵌入式C语言自我修养:编译链接
源文件生成可执行文件的过程? 源文件经过预处理、编译、汇编、链接生成一个可执行的目标文件。 编译器驱动程序,包括预处理器、编译器、汇编器和链接器。Linux用户可以调用GCC驱动程序来完成整个编译流程。 使用GCC驱动程序将示例程序从ASCII码源文件转换…...
Mac制作Linux操作系统启动盘
前期准备 一个 Mac 电脑 一个 U 盘(8GB 以上) 下载好 Linux 系统镜像(iso 文件) 具体步骤 挂载 U 盘 解挂 U 盘 写系统镜像到 U 盘 完成 一、挂载 U 盘 首先插入 U 盘,打开终端输入下面的命令查看 U 盘是否已经 m…...
PHP语言发展历程
PHP是一种开源的服务器端脚本语言,主要用于Web开发,最初由Rasmus Lerdorf在1994年创建。PHP的发展历程如下: PHP的起源:1994年,Rasmus Lerdorf创建了PHP的第一个版本,最初是一套用于跟踪他个人简历访问的C…...
长期使用Taotoken Token Plan套餐的成本节省实际感受
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用Taotoken Token Plan套餐的成本节省实际感受 1. 从按量付费到套餐订阅的转变 我们团队在接入大模型API进行日常开发与内容…...
Nodejs后端服务接入Taotoken实现AI对话功能的具体步骤
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Node.js 后端服务接入 Taotoken 实现 AI 对话功能的具体步骤 1. 准备工作:获取 API 密钥与模型 ID 在开始编写代码之前…...
3大技术挑战与解决方案:Buzz如何实现高效离线音频转录
3大技术挑战与解决方案:Buzz如何实现高效离线音频转录 【免费下载链接】buzz Buzz transcribes and translates audio offline on your personal computer. Powered by OpenAIs Whisper. 项目地址: https://gitcode.com/GitHub_Trending/buz/buzz 在当今数字…...
Cacti插件开发实战:从零开始创建自定义插件
Cacti插件开发实战:从零开始创建自定义插件 【免费下载链接】cacti Cacti ™ 项目地址: https://gitcode.com/gh_mirrors/ca/cacti Cacti是一款强大的网络监控和数据采集工具,通过插件系统可以轻松扩展其功能。本文将带你从零开始,掌握…...
这五家软件许可优化的公司,我直接说结论。
你要是搞工程设计软件的(CAD、SolidWorks、CATIA这些),在国内,闭眼找。 你要是啥软件都有一大堆,不差钱人也多,上OptiCore(优化内核)。 你要是全在云上跑、主用微软全家桶…...
10分钟终极指南:使用Chronos时间序列预测模型快速上手
10分钟终极指南:使用Chronos时间序列预测模型快速上手 【免费下载链接】chronos-forecasting Chronos: Pretrained Models for Time Series Forecasting 项目地址: https://gitcode.com/GitHub_Trending/ch/chronos-forecasting 想要在几分钟内完成专业级的时…...
ElevenLabs缅甸文语音准确率仅68.3%?实测对比5种预处理方案,第4种提升至92.7%(附Jupyter验证代码)
更多请点击: https://kaifayun.com 第一章:ElevenLabs缅甸文语音准确率实测基准与问题定位 为系统评估 ElevenLabs 对缅甸文(Burmese, my-MM)语音合成的准确性,我们在统一硬件环境(Intel i7-11800H 32GB …...
从B站视频到高品质音频:BilibiliDown音频提取全攻略
从B站视频到高品质音频:BilibiliDown音频提取全攻略 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/…...
数环通iPaaS流程引擎中断恢复机制设计:快照 + 消息驱动实现无缝续跑
一个无法回避的问题 做iPaaS自动化引擎开发的同学迟早会遇到这个问题:流程跑到一半断了,怎么办? 不是那种代码bug导致的异常退出——那种靠异常处理就行。我说的是更真实、更棘手的场景: 服务发版需要滚动重启,机器上还…...
从原理图到PCB:STM32最小系统外围电路布局布线实战避坑指南
从原理图到PCB:STM32最小系统外围电路布局布线实战避坑指南 在嵌入式硬件开发中,设计一个可靠的STM32最小系统PCB远比绘制原理图更具挑战性。许多开发者能够正确连接原理图符号,却在将设计转化为实际电路板时遭遇各种问题——从莫名其妙的复位…...
