需要源码联系邮件:kangxlchn@163.com

1.新建一个MFC工程(基于对话框)

环境:vs2017

统统NEXT

新建完成后打开MFCPrj.cpp文件

打开类试图

每创建一个MFC项目,默认包含3个类,“关于”对话框、主对话框类、初始化项目的App类

双击.rc文件可以打开资源视图

然后双击IDD_MFCPRJ_DIALOG就可以打开可视化编辑的窗口

如果打不开,看这里

打开工具箱就可以往里拖各种控件了。。。

-------------截至这里,基本所有的窗口都打开了,现在开始讲一些代码-----------

2.代码

项目生成后,都会有一个属于App类的theApp对象,对本应用程序实例化。

// CMFCTest1App 构造

CMFCTest1App::CMFCTest1App()
{
// 支持重新启动管理器
m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART; // TODO: 在此处添加构造代码,
// 将所有重要的初始化放置在 InitInstance 中
} // 唯一的一个 CMFCTest1App 对象 CMFCTest1App theApp;

应用程序创建完成,程序开始运行,进入消息循环,windows程序的事件都是消息驱动的,每产生一个消息就触发一个响应事件,消息和事件通过声明消息映射DECLARE_MESSAGE_MAP()联系在一起。 
默认包含三个消息:

 BEGIN_MESSAGE_MAP(CMFCTest1Dlg, CDialogEx)
ON_WM_SYSCOMMAND() //响应控制指令
ON_WM_PAINT() //响应绘图消息,用于刷新窗口
ON_WM_QUERYDRAGICON() //当用户拖动最小化窗口时取得光标
END_MESSAGE_MAP()

当应用程序关闭时,会发送WM_CLOSE消息,程序相应后结束。在类向导(右击工程/ctrl+shift+x)中可以添加消息处理函数。

void CMFCPrjDlg::OnClose()
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if (MessageBox(_T("确定退出吗"), _T("提示"), MB_YESNO | MB_ICONWARNING) == IDNO)
{
return;
} CDialog::OnClose();
}

应用程序通过定义,初始化,由winmain开始,注册、创建、显示窗口,消息响应,程序终止,结束运行周期

3.对话框类

afx_msg宏
afx_msg宏没有任何语法上的实际意义。afx_msg宏表示声明的是一个消息响应函数。
DoDataExchange函数
用于存放各类控件的变量信息
OnInitDialog函数
用于初始化对话框
OnSysCommand系统指令响应函数,默认处理窗口最小化和最大化指令等
OnPaint绘图消息响应函数
调出类向导
项目->类向导,快捷键Ctrl+shilft+X

4.添加按钮

将默认对话框中的静态文本和原有按钮删除,添加新的按钮1  2 ,在属性页中可以查看并设置。一般只需要修改两个属性,“Caption”和“ID”,前者是按钮的文本,后者是其唯一标识。

为按钮添加事件处理函数

实现按钮的功能 
添加按钮的控件型变量,变量命名一般以“m_”开头,后面部分为按钮功能简要说明。

在初始化函数OnInitDialog中修改Exit对话框不可用

// TODO:  在此添加额外的初始化代码
m_Exit.EnableWindow(FALSE);

双击按钮就进入代码:添加处理事件

void CMFCPrjDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
CString str;
m_Enable.GetWindowTextW(str);
if (str == "使能")
{
m_Exit.EnableWindow(TRUE);
m_Enable.SetWindowTextW(_T("使不能"));
}
else
{
m_Exit.EnableWindow(FALSE);
m_Enable.SetWindowTextW(_T("使能"));
}
} void CMFCPrjDlg::OnBnClickedButton2()
{
// TODO: 在此添加控件通知处理程序代码
SendMessage(WM_CLOSE, , );
}

【MFC】学习与问题整合的更多相关文章

  1. MFC 学习之 鼠标移动到Toolbar按钮上显示提示信息(tooltip),状态栏也随之改变

    1.在ResourceView里加入Toolbar资源,命名IDR_TOOLBAR1 2.在主程序的.h文件中加入变量:           CToolBar m_toolbar;CImageList ...

  2. SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传

    SpringMVC:学习笔记(10)——整合Ckeditor且实现图片上传 配置CKEDITOR 精简文件 解压之后可以看到ckeditor/lang下面有很多语言的js,如果不需要那么多种语言的,可 ...

  3. (转)MyBatis框架的学习(六)——MyBatis整合Spring

    http://blog.csdn.net/yerenyuan_pku/article/details/71904315 本文将手把手教你如何使用MyBatis整合Spring,这儿,我本人使用的MyB ...

  4. 【Java Web开发学习】Spring4整合thymeleaf视图解析

    [Java Web开发学习]Spring4整合thymeleaf视图解析 目录 1.简单介绍2.简单例子 转载:https://www.cnblogs.com/yangchongxing/p/9111 ...

  5. MFC学习笔记1---准备工作

    什么是MFC MFC,全称Microsoft Foundation Classes,微软基础类库,顾名思义,是微软的攻城狮们将一些常用的基础的Windows API 函数用C++的形式封装成类,简化程 ...

  6. SpringBoot学习- 4、整合JWT

    SpringBoot学习足迹 1.Json web token(JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准(RFC 7519),该token被设计为紧凑且安全的,特别适用于 ...

  7. SpringBoot学习- 3、整合MyBatis

    SpringBoot学习足迹 1.下载安装一个Mysql数据库及管理工具,同类工具很多,随便找一个都可以,我在windows下做测试项目习惯使用的是haosql 它内部集成了MySql-Front管理 ...

  8. Spring Boot 学习笔记(六) 整合 RESTful 参数传递

    Spring Boot 学习笔记 源码地址 Spring Boot 学习笔记(一) hello world Spring Boot 学习笔记(二) 整合 log4j2 Spring Boot 学习笔记 ...

  9. 学习SpringBoot,整合全网各种优秀资源,SpringBoot基础,中间件,优质项目,博客资源等,仅供个人学习SpringBoot使用

    学习SpringBoot,整合全网各种优秀资源,SpringBoot基础,中间件,优质项目,博客资源等,仅供个人学习SpringBoot使用 一.SpringBoot系列教程 二.SpringBoot ...

  10. MFC 学习笔记

    MFC 学习笔记 一.MFC编程基础: 概述: 常用头文件: MFC控制台程序: MFC库程序: 规则库可以被各种程序所调用,扩展库只能被MFC程序调用. MFC窗口程序: 示例: MFC库中类的简介 ...

随机推荐

  1. UE4 Navmesh 室内导航设置

    我用的UE版本是4.14.1   系统:win10 64 前不久给样板房里面做了一个扫地机器人,导航设置让我头大了很久,度娘也没有用,最后在谷哥上有所感悟,现在给出本人的设置过程和解决方案. 一开始拖 ...

  2. Java中的IO流(二)

    上一篇<Java中的IO流(一)>把学习IO流的字符流作了一下记录,本篇把字节流记录一下. 一,Java中的字节流 Java中的字节流的操作方式与字符流的操作方式大致相同,连方法名都是类似 ...

  3. HDU Ellipse(simpson积分)

    Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission( ...

  4. MySQL/MariaDB学习笔记——mysql.user表中存在多个root用户问题理解

    mysql.user表中存在多个root用户问题 问题描述:使用 SELECT host,user FROM mysql.user 发现mysql.user表中存在三个root用户,如下 持着对中几个 ...

  5. shell定时统计Nginx下access.log的PV并发送给API保存到数据库

    1,统计PV和IP 统计当天的PV(Page View) cat access.log | sed -n /`date "+%d\/%b\/%Y"`/p |wc -l 统计某一天的 ...

  6. 使用什么进行app开发

    HTML5+plus, Hbuilder HTML5+plus介绍 HTML5 Plus移动App,简称5+App,是一种基于HTML.JS.CSS编写的运行于手机端的App,这种App可以通过扩展的 ...

  7. 【设计模式】Java之单例设计模式

    1.单例设计模式:一个类只能有一个对象 1.1 创建单例类的步骤: 1.将构造方法私有化 2.创建私有的静态成员变量 3.共有的静态成员方法,提供当前的唯一对象 1.1 创建单例的两种方式: 1.饿汉 ...

  8. log4j配置输出日志文件

    在测试程序时,有时候运行一次可能需要很久,把日志文件保存下来是很有必要的,本文给出了scala程序输出日志文件的方式,同时使用本人的另一篇博客中介绍的将log4j.properties放到程序jar包 ...

  9. 学习/linux/list.h_双链表实现

    linux-3.5/include/linux/list.h 使用只含指针域的双向循环链表进行链表的操作. 下面是我选取部分list.h中代码: #ifndef _LINUX_LIST_H #defi ...

  10. JZ2440开发板:修改ARM芯片时钟(学习笔记)

    想要修改ARM芯片的时钟,需要去查询芯片手册和原理图,获取相关的信息(见下方图片) 首先来看时钟的结构图 根据结构图可以看出,时钟源有两种选择:1. XTIpll和XTOpll所连接的晶振 2. EX ...