windows应用(vc++2022)MFC基础到实战(2)
目录
- 向导和资源编辑器
- 使用 MFC 应用程序向导创建 MFC 应用程序
- 使用类视图管理类和 Windows 消息
- 使用资源编辑器创建和编辑资源
- 生成 MFC 应用程序的操作
- 1.创建一个主干应用程序。
- 2.了解即使在不添加你自己的任何一行代码的情况下,框架和 MFC 应用程序向导也能提供的内容。
- 3.构造应用程序的用户界面。
- 4.将菜单映射到处理程序函数。
- 5. 编写处理程序代码。
- 6.将工具栏按钮映射到命令。
- 7.测试处理程序函数。
- 8.添加对话框。
- 9. 初始化、验证和检索对话框数据。
- 10.创建其他类。
- 11.将可以立即使用的组件添加到应用程序。
- 12.实现文档类。
- 13.实现“打开”、“保存”和“另存为”命令。
- 14.实现视图类。
- 15. 增强默认打印。
- 16.添加滚动。
- 17. 创建窗体视图。
- 18.创建数据库窗体。
- 19.创建简单文本编辑器。
- 10.增加拆分窗口
- 生成、测试和调试应用程序。
- 1.创建 COM 组件。
- 2.从头开始创建容器应用程序。
- 3.从头开始创建支持自动化的应用程序。
向导和资源编辑器
Visual C++ 包含多个在 MFC 编程中使用的向导,以及许多集成资源编辑器。 对于 ActiveX 控件编程,ActiveX 控件向导的作用与 MFC 应用程序向导非常类似。 虽然可以在不使用其中大多数工具的情况下编写 MFC 应用程序,但这些工具可大大简化和加速工作。
使用 MFC 应用程序向导创建 MFC 应用程序
使用 MFC 应用程序向导可在 Visual C++ 中创建 MFC 项目,其中可以包含 OLE 和数据库支持。 项目中的文件包含应用程序、文档、视图和框架窗口类;标准资源,包括菜单和可选工具栏;其他必需的 Windows 文件;以及包含标准 Windows 帮助主题的可选 .rtf 文件,你可以修订和扩充这些主题以创建程序的帮助文件。
使用类视图管理类和 Windows 消息
类视图可帮助你为 Windows 消息和命令创建处理程序函数、创建和管理类、创建类成员变量、创建自动化方法和属性、创建数据库类等。
类视图还可帮助替代 MFC 类中的虚拟函数。 选择要替代的类和虚拟函数。 此过程的其余部分类似于消息处理,如以下段落中所述。
在 Windows 下运行的应用程序由消息驱动。 在正在运行的程序中发生的用户操作和其他事件会使 Windows 将消息发送到程序中的窗口。 例如,如果用户在窗口中单击鼠标,则 Windows 会在按鼠标左键时发送 WM_LBUTTONDOWN 消息,在释放按钮时发送 WM_LBUTTONUP 消息。 当用户从菜单栏中选择命令时,Windows 还会发送 WM_COMMAND 消息。
在 MFC 框架中,各种对象(如文档、视图、框架窗口、文档模板和应用程序对象)可以“处理”消息。 此类对象会提供“处理程序函数”作为其成员函数之一,框架会将传入消息映射到其处理程序。
编程任务的很大一部分是选择哪些消息要映射到哪些对象,然后实现该映射。 为此,可使用类视图和类向导。
类向导会创建空消息处理程序成员函数,你会使用源代码编辑器实现处理程序的主体。 你还可以使用类视图创建或编辑类(包括你自己的类,而不是派生自 MFC 类)及其成员。
在使用 MFC 框架配置应用程序时,你的角色是提供特定于应用程序的源代码,并通过定义组件响应的消息和命令来连接组件。 可以使用 C++ 语言和标准 C++ 技术从类库提供的类派生自己的特定于应用程序的类,并替代和扩充基类的行为。
使用资源编辑器创建和编辑资源
使用 Visual C++ 资源编辑器可创建和编辑菜单、对话框、自定义控件、快捷键、位图、图标、游标、字符串和版本资源。 从 Visual C++ 版本 4.0 起,工具栏编辑器使创建工具栏变得更加容易。
为了更好地帮助你,Microsoft 基础类库提供了一个名为 COMMON.RES 的文件,它包含你可从 COMMON.RES 复制并粘贴到自己的资源文件中的“剪贴画”资源。 COMMON.RES 包含工具栏按钮、常用游标、图标等。 可以在应用程序中使用、修改和重新分发这些资源。
MFC 应用程序向导、Visual C++ 向导、资源编辑器和 MFC 框架可为你完成大量工作,使管理代码更加容易。 大部分特定于应用程序的代码处于文档和视图类中。
生成 MFC 应用程序的操作
1.创建一个主干应用程序。
运行 MFC 应用程序向导。 在选项页中指定您需要的选项。 选项包括使应用程序成为 COM 组件、容器或两者;添加自动化;以及让应用程序可识别数据库。 MFC 应用程序向导为主干应用程序创建文件,包括应用程序的源文件、文档、视图和框架窗口;一个资源文件;一个项目文件;以及其他内容(全部根据您的规范定制)。
2.了解即使在不添加你自己的任何一行代码的情况下,框架和 MFC 应用程序向导也能提供的内容。
生成主干应用程序并在 Visual C++ 中运行它。 正在运行的主干应用程序从框架派生了许多标准“文件”、“编辑”、“视图”和“帮助”菜单命令。 对于 MDI 应用程序,您还将获得一个完整的功能性 Windows 菜单,而框架将管理 MDI 子窗口的创建、排列和析构。
3.构造应用程序的用户界面。
使用 Visual C++ 资源编辑器直观地编辑应用程序的用户界面:
- 创建菜单。
- 定义快捷键。
- 创建对话框。
- 创建并编辑位图、图标和光标。
- 编辑 MFC 应用程序向导为你创建的工具栏。
- 创建并编辑其他资源。
你还可以在对话框编辑器中测试对话框。 MFC 应用程序向导创建的默认资源文件提供了很多您需要的资源。 利用 Visual C++,您可以轻松直观地编辑现有资源和添加新资源。
4.将菜单映射到处理程序函数。
使用“类视图”中“属性”窗口中的“事件”按钮(或类向导中的“命令”选项卡)将菜单和快捷键连接到代码中的处理程序函数。 这些工具将消息映射项和空函数模板插入你指定的源文件并管理许多手动编码任务。
5. 编写处理程序代码。
使用类视图直接跳转到在源代码编辑器中的代码。 为处理程序函数填写代码。 有关使用类视图的详细信息以及向项目添加代码的向导的详细信息,请参阅使用代码向导添加功能。 类视图打开编辑器,滚动到空函数模板并为您放置光标。
6.将工具栏按钮映射到命令。
通过为工具栏上的每个按钮分配相应的命令 ID 来将其映射到菜单或快捷键命令。 框架控制工具栏按钮的绘制、启用、禁用、检查和其他可视方面。
7.测试处理程序函数。
重新生成程序并使用内置调试工具来测试处理程序是否正常工作。 您可以逐步执行代码或跟踪代码以了解处理程序的调用情况。 如果已填写处理程序代码,处理程序将执行命令。 框架将自动禁用未处理的菜单项和工具栏按钮。
8.添加对话框。
使用对话框编辑器设计对话框模板资源。 然后创建对话框类和处理对话框的代码。 框架管理对话框并帮助检索用户输入的信息。
9. 初始化、验证和检索对话框数据。
您还可以定义初始化和验证对话框的控件的方式。 使用 Visual Studio 将成员变量添加到对话框类,并将这些变量映射到对话框控件。 指定要在用户输入数据时应用于每个控件的验证规则。 根据需要提供您自己的自定义验证。 框架管理对话框初始化和验证。 如果用户输入无效的信息,框架将显示消息框并让用户重新输入数据。
10.创建其他类。
除 MFC 应用程序向导自动创建的参数之外,使用类视图创建附加文档、视图和框架窗口类。 您可以创建其他数据库记录集类、对话框类等。 (利用类视图,您可以创建并非派生自 MFC 类的类。) 类视图这些类添加到您的源文件并帮助您定义它们与所处理的任何命令的关联。
11.将可以立即使用的组件添加到应用程序。
使用 New Item dialog box
添加各种项。 这些项可轻松集成到应用程序中,从而显著减少了您的工作量。
12.实现文档类。
实现特定于应用程序的文档类。 添加成员变量以保留数据结构。 添加成员函数以提供数据的接口。 框架已经知道如何与文档数据文件交互。 它可以打开和关闭文档文件、读取和写入文档的数据以及处理其他用户界面。 您可以重点关注如何操作文档的数据。
13.实现“打开”、“保存”和“另存为”命令。
为文档的 Serialize 成员函数编写代码。 框架显示“文件”菜单上的“打开”“保存”和“另存为”命令的对话框。 该对话框使用 Serialize 成员函数中指定的数据格式写回和读回文档。
14.实现视图类。
实现与文档对应的一个或多个视图类。 使用类视图实现您映射到用户界面的视图的成员函数。 有各种 CView
派生类可用,包括 CListView
和 CTreeView
。 框架管理文档及其视图之间的大多数关系。 该视图的成员函数访问视图的文档,以便在屏幕或打印页上呈现其图像和更新文档的数据结构以响应用户编辑命令。
15. 增强默认打印。
如果需要支持多页打印,请重写视图成员函数。 框架支持“文件”菜单上的“打印”“页面设置”和“打印预览”命令。 您必须告诉它如何将文档分为多个页。
16.添加滚动。
如果需要支持滚动,请从 CScrollView 派生你的视图类。 当视图窗口变得过小时,视图将自动添加滚动条。
17. 创建窗体视图。
如果要让你的视图基于对话框模板资源,请从 CFormView 派生你的视图类。 该视图使用对话框模板资源来显示控件。 用户可以使用 Tab 键切换视图中的控件。
18.创建数据库窗体。
如果需要基于窗体的数据访问应用程序,请从 CRecordView 派生你的视图类(对于 ODBC 编程)。 该视图像窗体视图一样工作,但其控件连接到表示数据库表的 CRecordset 对象的字段。 MFC 将为您在控件和记录集之间移动数据。
19.创建简单文本编辑器。
如果要让你的视图成为简单的文本编辑器,请从 CEditView 或 CRichEditView 派生你的视图类。 该视图提供了编辑函数、剪贴板支持和文件输入/输出。 CRichEditView 提供了带样式的文本。
10.增加拆分窗口
如果要支持窗口拆分,请将 CSplitterWnd 对象添加到 SDI 框架窗口或 MDI 子窗口,并将其挂钩到窗口的 OnCreateClient 成员函数中。 框架在滚动条旁边提供拆分框控件并管理将您的视图拆分为多个窗格。 如果用户拆分了一个窗口,框架将创建视图对象并将其附加到文档。
生成、测试和调试应用程序。
使用 Visual C++ 的工具生成、测试和调试应用程序。 Visual C++ 可让您调整编译、链接和其他选项。 它还可让你浏览源代码和类结构。
1.创建 COM 组件。
运行 MFC 应用程序向导。 在“复合文档支持”选项卡中选择“全服务器”或“微型服务器”。 框架生成启用了 COM 组件功能的框架应用程序。 所有 COM 功能都可以传输到现有应用程序,只需稍作修改。
2.从头开始创建容器应用程序。
运行 MFC 应用程序向导。 在“复合文档支持”选项卡中选择“容器”。使用类视图,转到源代码编辑器。 为 COM 处理程序函数填写代码。 框架生成一个框架应用程序,该应用程序可以插入 COM 组件(服务器)应用程序创建的 COM 对象。
3.从头开始创建支持自动化的应用程序。
运行 MFC 应用程序向导。 从“高级功能”选项卡中选择“自动化”。使用类视图在应用程序中公开用于自动化的方法和属性。 框架生成可由其他应用程序激活和自动化的框架应用程序。
相关文章:
windows应用(vc++2022)MFC基础到实战(2)
目录向导和资源编辑器使用 MFC 应用程序向导创建 MFC 应用程序使用类视图管理类和 Windows 消息使用资源编辑器创建和编辑资源生成 MFC 应用程序的操作1.创建一个主干应用程序。2.了解即使在不添加你自己的任何一行代码的情况下,框架和 MFC 应用程序向导也能提供的内…...

记一次反射型XSS
记一次反射型XSS1.反射型XSS1.1.前言1.2.测试过程1.3.实战演示1.3.1.输入框1.3.2.插入代码1.3.3.跳转链接2.总结1.反射型XSS 1.1.前言 关于这个反射型XSS,利用的方式除了钓鱼,可能更多的就是自娱自乐,那都说是自娱自乐了,并且对系…...
BUUCTF-[羊城杯 2020]Bytecode
题目下载:下载 这道题是一个关于python字节码的。 补充一下相关知识:https://shliang.blog.csdn.net/article/details/119676978dis --- Python 字节码反汇编器 — Python 3.7.13 文档 手工还原参考:[原创]死磕python字节码-手工还原python源码-软件逆…...
《Uniapp入门指南:从安装到打包的全流程》
Uniapp是一款基于Vue.js的跨平台开发框架,可以快速构建出同时支持多个移动端平台和Web端的应用程序。本文将介绍Uniapp的基础知识和开发流程,帮助读者快速入门Uniapp开发。一、Uniapp的基础知识1.Uniapp的优势Uniapp的最大优势是可以快速开发同时支持多个…...
机器学习算法集成系统
版权所有:CSDN——川川菜鸟 本系统并不作为本专栏要求,这一篇自愿学习。 文章目录 本系统设计背景设计思路完整代码本系统设计背景 随着人工智能技术的不断发展,机器学习成为了人工智能领域的重要组成部分。机器学习算法能够从大量数据中发现模式、规律,并利用这些规律对新…...

scratch绘制雷达 电子学会图形化编程scratch等级考试三级真题和答案解析2022年9月
目录 scratch绘制雷达 一、题目要求 1、准备工作 2、功能实现 二、案例分析...

VRRP主备备份
1、VRRP专业术语 VRRP备份组框架图如图14-1所示: 图14-1:VRRP备份组框架图 VRRP路由器(VRRP Router):运行VRRP协议的设备,它可能属于一个或多个虚拟路由器,如SwitchA和SwitchB。虚拟路由器(Virtual Router):又称VRR…...

【软件逆向】软件破解?病毒木马?游戏外挂?
文章目录课前闲聊认识CTF什么是CTFCTF解题模式什么是逆向定义应用领域CTF中的逆向现状推荐书籍学习要点逆向工程学习基础常规逆向流程阶段一:信息收集阶段二:过保护后静态调试阶段三:结合动态调试阶段四:写解题脚本逆向例题概览1-控制台程序解题过程2-Crackme3-游戏4-移动安全C…...
curl请求常用参数和返回码
curl是一个用于传输数据的工具,支持各种协议,如HTTP、FTP、SMTP等。以下是一些常用的curl请求参数及其作用: -X, --request:指定HTTP请求方法,常见的有GET、POST、PUT、DELETE等。 -H, --header:设置HTTP请…...
【STM32】进阶(一):抢占式优先级和响应式优先级(NVIC_PriorityGroupConfig)
1、简介 STM32(Cortex-M3)中每个中断源都有两级优先级:抢占式优先级(pre-emption priority)和子优先级(subpriority),子优先级也叫响应式优先级。 1.1 抢占式优先级 望文知义,就是优先级高的…...
LogCompilation后JIT输出文件格式解析
https://wiki.openjdk.org/display/HotSpot/LogCompilationoverview https://spotcodereviews.com/articles/optimization/2020/12/23/why-does-the-jit-continually-recompile-the-same-method.html task_queued count表示总共执行次数,iicount表示解释器执行次数…...

Linux学习第二十四节-Podman容器
一、容器的概念 容器是由一个或多个与系统其余部分隔离的进程组成的集合。我们可以理解为“集装箱”。 集装箱是打包和装运货物的标准方式。它作为一个箱子进行标记、装载、卸载,以及从一个 位置运输到另一个位置。该容器的内容与其他容器的内容隔离,…...

基于quartz实现定时任务管理系统
基于quartz实现定时任务管理系统 背景 说起定时任务框架,首先想到的是Quartz。这是定时任务的老牌框架了,它的优缺点都很明显。借助PowerJob 的readme文档的内容简单带过一下这部分。 除了上面提到,还有elastic-job-lite、quartzui也是相当…...

vue-element-admin:基于element-ui 的一套后台管理系统集成方案
文章目录一、vue-element-admin1、vue-element-admin1.1简介1.2安装2、vue-admin-template2.1简介2.2安装一、vue-element-admin 1、vue-element-admin 1.1简介 vue-element-admin是基于element-ui 的一套后台管理系统集成方案。 GitHub地址:https://github.com…...
KVM-7、KVM 虚拟机创建的几种方式
通过对 qemu-kvm、libvirt 的学习,总结三种创建虚拟机的方式: (1)通过 qemu-kvm 创建 (2)通过 virt-install 创建 (3)通过 virt-manager 创建 在使用这三种创建虚拟机前提是 宿主机必须支持 cpu 的硬件虚拟化技术(Intel 是 vmx,AMD 是svm),通过下面方式进行查看…...

Hadoop三大框架之HDFS
一、概述HDFS产生的背景及定义HDFS产生背景随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,需要一种系统来管理多台机器上的文件,这就是分布式文件…...

好好的系统,为什么要分库分表?
不急于上手实战 ShardingSphere 框架,先来复习下分库分表的基础概念,技术名词大多晦涩难懂,不要死记硬背理解最重要,当你捅破那层窗户纸,发现其实它也就那么回事。 什么是分库分表 分库分表是在海量数据下࿰…...

多种调度模式下的光储电站经济性最优储能容量配置分析(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
二分法(适用于任何题型!!!)
今天看二分法看了一天,看吐了,现在讲讲怎么做类题。 只讲两种做法(实则是可合并为一种),任何题型都可以转化为这种做法!!!是任何! 首先,设置 int left,righ…...
js常见的七种继承及实现
在 JavaScript 中,常见的继承方式有以下七种:大厂面试题分享 面试题库前后端面试题库 (面试必备) 推荐:★★★★★地址:前端面试题库1. 原型链继承原型链继承是 JavaScript 中一种基于原型的继承方式&#…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...

论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现指南针功能
指南针功能是许多位置服务应用的基础功能之一。下面我将详细介绍如何在HarmonyOS 5中使用DevEco Studio实现指南针功能。 1. 开发环境准备 确保已安装DevEco Studio 3.1或更高版本确保项目使用的是HarmonyOS 5.0 SDK在项目的module.json5中配置必要的权限 2. 权限配置 在mo…...
怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)
+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...
6.计算机网络核心知识点精要手册
计算机网络核心知识点精要手册 1.协议基础篇 网络协议三要素 语法:数据与控制信息的结构或格式,如同语言中的语法规则语义:控制信息的具体含义和响应方式,规定通信双方"说什么"同步:事件执行的顺序与时序…...

【JavaEE】万字详解HTTP协议
HTTP是什么?-----互联网的“快递小哥” 想象我们正在网上购物:打开淘宝APP,搜索“蓝牙耳机”,点击商品图片,然后下单付款。这一系列操作背后,其实有一个看不见的“快递小哥”在帮我们传递信息,…...

【基于阿里云搭建数据仓库(离线)】使用UDTF时出现报错“FlatEventUDTF cannot be resolved”
目录 问题: 可能的原因有: 解决方法: 问题: 已经将包含第三方依赖的jar包上传到dataworks,并且成功注册函数,但是还是报错:“FlatEventUDTF cannot be resolved”,如下:…...

算法-构造题
#include<iostream> #include<bits/stdc.h> using namespace std; typedef long long ll; const ll N 5e5 10; int main() {ll n, k;cin >> n >> k; ll a[N] {0}; // 初始化一个大小为N的数组a,用于存储排列// 构造满足条件的排列for (l…...