微软基础类库(英语: Classes,简称MFC)是微软公司提供的一个类库(class libraries),以C++类的形式封装了Windows API,并且包含一个应用程序框架,以减少应用程序开发人员的工作量。其中包含大量Windows句柄封装类和很多Windows的内建控件和组件的封装类。

  • vs 2019 最新版,在设计上又有了很大的变化,并且其所有的服务,模块都是自定义搭建的,所以在一开始安装的时候,没有勾选mfc模块的话,是无法快速构成mfc应用的.

vs2019下MFC模块的安装:

首先,在项目中新建一个项目,进入项目创建选项卡,看看是否有mfc项目,如果没有则需要更新vs,加载mfc模块.

将项目创建卡拉到最下面,点击安装更多工具和功能:

进入vs模块更新界面,在这里可以更新你的vs所装的模块,要想支持mfc开发,需要勾选c++桌面开发中的mfc模块,默认情况下是不勾选的.然后更新即可.不要选择单个组件安装,会出现各种棘手的问题.

创建MFC项目:

  • 安装好mfc模块后,我们创建mfc项目,创建完成后会进入mfc项目的基本属性定义选项卡:


在这里,我们选择单文档程序,项目样式选择mfc基本样式,当然你还可以定义其他各种自定义属性.定义好基本属性之后,点击完成,一个mfc模板就创建好了.

我们直接将项目设为启动项目,调试运行,即可弹出一个默认的窗口:

如此,一个简单的mfc窗口程序就快速构建成功了,我们只需要在这个基础上再去重构,就可实现各种复杂的功能,和我们想要实现的功能.


简单的实现一个绘图小程序:

  • 首先我们展开自动构架的mfc项目的资源文件,双击.rc文件打开资源视图,找到Menu目录下的IDR_前缀的文件,双击打开,进入窗口可视化设计视图:

我们可以对菜单栏进行编辑,这里创建一个新的绘制菜单,并新建几个绘制功能选项.

  • 现在我们所需要的界面设计完成了,那那么我们怎么实现其功能呢.

通过右键,为每个选项添加事件处理程序

我们可以在对应的view.cpp中看到对应生成的函数:

我们直接在该类中声明所需要的变量,绘制类型,绘制起点,绘制终点.
并当监测到每个选项时,返回一个int型变量用来判断绘制类型.

  • 通过类向导添加两个处理程序,用来检测鼠标左键按下与抬起两个事件:

打开消息选项卡,可以找到wm_lbuttondown与wm_lbuttonup两个消息添加处理程序,然后点击编辑代码,即可进入自动生成的函数体中,编写实现代码了:

通过一个switch多路分支语句来控制实现的方式,绘制方法具体实现,调用mfc自带函数即可.


参考:
MFC

2019.12.17
13.:41

[MFC]_在vs2019中使用MFC快速构建简单windows窗口程序的更多相关文章

  1. 在VS中手工创建一个最简单的WPF程序

    如果不用VS的WPF项目模板,如何手工创建一个WPF程序呢?我们来模仿WPF模板,创建一个最简单的WPF程序. 第一步:文件——新建——项目——空项目,创建一个空项目. 第二步:添加引用,Presen ...

  2. 快速搭建简单的LBS程序——地图服务

    很多时候,我们的程序需要提供需要搭建基于位置的服务(LBS),本文这里简单的介绍一下其涉及的一些基本知识. 墨卡托投影 地图本身是一个三维图像,但在电脑上展示时,往往需要将其转换为二维的平面图形,需要 ...

  3. 玩转Windows服务系列——使用Boost.Application快速构建Windows服务

    玩转Windows服务系列——创建Windows服务一文中,介绍了如何快速使用VS构建一个Windows服务.Debug.Release版本的注册和卸载,及其原理和服务运行.停止流程浅析分别介绍了Wi ...

  4. Spring Boot 基于Spring Initializer 的快速构建 day02

    一.基于Spring Initializr 快速构建Spring Boot项目(快速) 备注:需要联网 这是使用Intellij Idea快速构建可以为我们省去大量的pom.xml配置时间,简单操作, ...

  5. 快速构建第三方api应用

    1.使用框架和扩展 详细请看composer.json "php": "^7.1.3", "laravel-admin-ext/config" ...

  6. 破解 Rith's CrackMe #1(对比IDA查看动态分析中的MFC函数名)

    系统 : Windows xp 程序 : Rith's CrackMe #1 程序下载地址 :http://pan.baidu.com/s/1gecW9Qr 要求 : 注册机编写 使用工具 : IDA ...

  7. VC中的MFC到底是什么?

    1. 微软基础类库(英语:Microsoft Foundation Classes,简称MFC)是一个微软公司提供的类库(class libraries),以C++类的形式封装了Windows API ...

  8. 回调函数中使用MFC类的成员或对话框控件的简单方法

    在MFC的很多程序中,常常需要在回调函数中调用MFC类的类成员变量.类成员函数,亦或者对话框控件的句柄.由于回调函数是基于C编程的Windows SDK的技术,而类成员又有this指针客观条件限制.. ...

  9. 在共享DLL中使用MFC

    使用VS2008,在项目属性中有一项MFC的使用,有三种设置: 1.使用标准Windows库 2.在共享DLL中使用MFC 3.在静态库中使用MFC          第一种顾名思义.        ...

随机推荐

  1. ModelAndView重定向带参数解决方法

    业务场景:SpringMVC项目使用ModelAndView进行重定向跳转到另外一个action时,需要在url后面带上参数 如果是带参数带一个页面,直接用modelAndView.addObject ...

  2. jwt工具类的封装

    第一步先引入jar: <dependency> <groupId>com.nimbusds</groupId> <artifactId>nimbus-j ...

  3. C#上手练习3(while、do while语句)(添加机器人聊天)

    C# while 循环与 for 循环类似,但是 while 循环一般适用于不固定次数的循环. while 循环的语法形式如下. while(布尔表达式){    语句块;} while 语句执行的过 ...

  4. DevExpress的TextEdit控件没法调整高度解决

    场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...

  5. HTTP中的2XX状态码

    HTTP状态码分类 1XX --信息,服务器收到请求,需要请求者继续执行操作 2XX--成功,操作被成功接收并处理 3XX--重定向,需要进一步的操作以完成请求 4XX--客户端错误,请求包含语法错误 ...

  6. Linux下设置root密码

    如下面的代码所示: sudo passwd [sudo] geeksong 的密码: 输入新的 UNIX 密码: 重新输入新的 UNIX 密码: passwd:已成功更新密码 更性的unix密码就是r ...

  7. Android 蓝牙开发(3)——蓝牙的详细介绍

    前面的两篇文章,主要是在 Android 官网关于蓝牙介绍的基础上加上自己的理解完成的.主要针对的是 Android 开发中的一些 API 的使用. 第一篇文章 Android 蓝牙开发(1) 主要是 ...

  8. rabbitmq和kafka大概比较

    两者都是一个分布式架构 kafka 具有较高的吞吐量,rabbimq 吞吐量较小 rabbitmq 的可靠性更好,确认机制(生产者和 exchange,消费者和队列),支持事务,但会造成阻塞,委托(添 ...

  9. tornado基础

    一.初识tornado 1.什么是tornado 全称Tornado Web Server,是一种Web服务器软件的开源版本. 2.特点 作为Web框架,它是一个轻量级的Web框架,类似于另一个Pyt ...

  10. .htaccess设置301跳转及常用技巧整理

    在虚拟主机环境中,基本上都是Apache环境.Apache的伪静态的设置,都是在网站根目录设置.htaccess文件,在.htaccess文件中无论是伪静态, 还是301跳转,甚至是防盗链和禁止某个I ...