一、创建并运行MFC单文档程序

1、创建单文档程序

这里使用的是VS2017。首先,打开VS2017,选择文件->新建->项目,然后选择Visual C++ -> MFC /ATL>MFC应用程序 ,如下图所示:

修改名称(或默认),修改位置(或默认),点击确定。然后接下来可以看到如下界面:

应用程序类型选择“单个文档”,其他设置默认,然后点击完成即可创建成功。

2、运行单文档程序

点击"本地Windows调试器"或者使用Ctrl+F5即可运行,得到视图窗口,如下图所示:

二、工作区

1、资源管理器

可以看到屏幕右侧自带了资源管理器,用来管理各类代码。

若没有或不慎关闭,可以从资源->解决方案资源管理器打开。

2、资源视图

资源视图,用于管理程序运行时的视图。

可从视图 ->其他窗口 -> 资源视图,或者快捷键ctrl+shift+E打开。

3、类视图

类视图用于将视图对应的不同请求方式以类中的不同方法来区别定义。

可从视图 -> 类视图,或者快捷键ctrl+shift+C打开。

三、添加菜单及相应事件

1、新建菜单

打开资源视图,点击进入IDR_MAINFRAME,如下所示:

然后在“帮助(H)”后面的空白框中(即箭头所指处)填入新建菜单的名字,然后点击其子菜单处的空白方框,同样写入新建子菜单的名字,如下所示:

2、添加事件

首先,修改子菜单的ID(默认亦可),单击子菜单,然后在菜单编辑器中修改其ID属性值,这里我将其改为ChildMenu。

接下来,右键子菜单,选择添加事件处理程序,如下:

然后在事件处理向导处选择消息类型为COMMAND,在类列表中选中C+”你的项目名称“+View(若你的项目名为Test则为CTestView),然后点击添加编辑,如下:

然后会跳转到指定cpp文件中,并且自动生成函数名。

现在来编写相应函数内容,我在里面写了一段代码,它的作用是弹出小窗口,同时显示出“1",如下:

最后,运行程序,测试子菜单事件:

在上图中可以看到,我们新增的菜单。

点击子菜单:

结果跟预想的一样,出现了一个小窗口,同时窗口中显示出”1“。

四、添加弹出框

1、创建弹出框

在资源视图中,右键Dialog->添加资源,然后选择Dialog点击新建,即可创建成功。

我们可以看到Dialog中多了一个对象,就是我们新建的弹出框。

2、调用弹出框

创建了弹出框,之后该如何调用它呢,或者说该怎么让它弹出来呢?

1)添加跳出框类对象

首先,修改弹出框ID(默认亦可),点击IDD_DIALOG1,在对话框节点中,修改其ID属性,我将其改为Test。

然后右键弹出框,点击添加类:

填入类名(注意类名不可与ID重复,不论是菜单ID或者是弹出框ID),我写的是TestDLG,点击确定即可:

2)在菜单中调用弹出框

点击进入资源视图->Menu->IDR_MAINFRAME中,找到之前创建的子菜单,右键子菜单->添加事件处理程序->CXXXView,点击编辑代码。

接下来,给跳转后的cpp文件加上“TestDLG.h”头文件(头文件名字=你的弹出框类名.h):

然后编辑子菜单事件对应的函数,在其中调用我们刚才创建的弹出框。

然后运行程序,点击子菜单,即可看到我们刚才的弹出框被调用。

3、给弹出框添加常用控件

点击进入资源视图->Dialog->Test,找到刚才新建的弹出框,可以看到界面上有一个工具箱,若没有,可使用Crtl+Alt+x快捷键打开。

1)Button控件

按钮,将Button拖到弹出框上,可以通过修改Button的Caption属性,让Button上显示出不同的文字。

双击按钮可以编辑按钮点击事件:

2)Static Text

静态文本,可以通过修改其Caption属性,令其显示不同的文字。

3)Edit Control

文本框,可用于输入文本内容。

可通过GetDlgItemInt(文本框ID)获取文本框内的数字内容(Int类型)

可通过GetDlgItem(文本框ID)->GetWindowText(CString类型变量)获取文本框的字符串内容(CString类型)

介绍完后,我们可以利用这些控件实现一点简单的功能:通过点击按钮显示文本框中的内容。

控件布局如下所示:

编辑按钮响应事件,获取文本框中的字符串,并通过弹出小窗口的形式显示出来:

运行程序,调出弹窗,并在文本框中写入内容,点击按钮,可以看到,文本框中内容通过小窗口显示了出来:

MFC单文档的更多相关文章

  1. MFC单文档程序结构

    MFC单文档程序结构三方面: Doc MainFrame View

  2. VC++ MFC单文档应用程序SDI下调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错原因分析及解决办法:glewInit()初始化的错误

    1.问题症状 在VC++环境下,利用MFC单文档应用程序SDI下开发OpenGL程序,当调用glGenBuffersARB(1, &pbo)方法编译通过但执行时出错,出错代码如下: OpenG ...

  3. MFC单文档框架分析及执行流程(转)

    原文转自 https://blog.csdn.net/u011619422/article/details/40402705 首先来分析一下MFC单文档类的结构: 它包括如下几个类: CAboutDl ...

  4. VC-基础:MFC单文档程序架构解析

    MFC单文档程序架构解析 这里我以科院杨老师的单文档程序来分析一下MFC单文档的程序架构,纯属个人见解,不当之处烦请指教! 首先我们了解到的是 图(一) theApp 是唯一一个在程序形成的时候就存在 ...

  5. MFC单文档程序架构解析

    MFC单文档程序架构解析 MFC单文档程序架构解析 这里我以科院杨老师的单文档程序来分析一下MFC单文档的程序架构,纯属个人见解,不当之处烦请指教! 首先我们了解到的是 图(一) theApp 是唯一 ...

  6. MFC单文档视图程序简介

    在视图应用程序中,应用程序的数据由文档对象代表,数据的视图由视图对象代表.MFC的Cdocument类是文档对象的基类,Cview类是视图对象的基类.应用程序的主窗口,其操作功能在MFC的Cframe ...

  7. 多线程串口编程工具CserialPort类(附VC基于MFC单文档协议通讯源程序及详细编程步骤)

    老有人觉得MSComm通讯控件很土,更有人大声疾呼:忘了它吧.确实当我们对串口编程有了一定的了解后,应该用API函数写一个属于自己的串口程序,由于编程者对程序了解,对程序修改自如.但我一直没有停止过用 ...

  8. MFC单文档视图中嵌入GLFW窗口

    开始学习OpenGL由于有一段时间,但是glfw只有窗口区,虽然通过某种手段(移步这里)可以加入工具栏,但仍然无法作为一个标准的GUI,而直接在MFC或Qt里面使用OpenGL API感觉有诸多制肘, ...

  9. 【2016.3.30项目技术记录】]VS2010自动生成MFC单文档框架程序的修改:去除属性框,在CViewTree类中添加鼠标单击响应

    转自http://blog.csdn.net/yanfeiouc2009/archive/2010/06/07/5653360.aspx 手头上有个东西要用到单文档,由于想省事,直接用VS2010做了 ...

随机推荐

  1. 关于TCP连接状态的解释

    TCP各个状态主要存在于三次握手和四次挥手的过程 1.TCP建立连接时的三次握手: 服务端应用监听端口处于LISTEN状态,等待建立连接. 第一次握手:客户端发送SYN=一个随机数,然后进入SYN_S ...

  2. 权限管理-ACL

    权限管理-ACL 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.ACL权限简介与开启 1.ACL权限简介 比如在根下有一个目录(”/yinzhengjie“),这个目录的所有者 ...

  3. Vagrant工具的安装

    Vagrant工具的安装 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 这篇博客源于我的北京一位好友:崔佳.在此,为了感激崔佳的帮助,特意写下这篇博客.希望对一些开发的小伙伴有些帮 ...

  4. 用访问控制列表(ACL)实现包过滤

      用访问控制列表(ACL)实现包过滤 一.ACL概述 1.ACL(Access Control List,访问控制列表)是用来实现数据包识别功能的 2.ACL可以应用于诸多方面 a>.b包过滤 ...

  5. 如何解决win7系统无法运行cmd命令提示符

    如何解决win7系统无法运行cmd命令提示符   CMD命令可以帮助我们很快的执行所需要的程序命令,可以查询系统中很多的信息和解决系统很多的故障,对我们来说非常方便,但是最近有用户反馈自己win7电脑 ...

  6. 多目标遗传算法 ------ NSGA-II (部分源码解析)二元锦标赛选择 tourselect.c

    tourselect.c  文件中共有两个函数: selection (population *old_pop, population *new_pop) individual* tournament ...

  7. 学习windows编程 day4 之 绘制随机矩形和peekMessage

    #include <windows.h> #include <strsafe.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT messa ...

  8. 单源最短路径问题(dijkstra算法 及其 优化算法(优先队列实现))

    #define _CRT_SECURE_NO_WARNINGS /* 7 10 0 1 5 0 2 2 1 2 4 1 3 2 2 3 6 2 4 10 3 5 1 4 5 3 4 6 5 5 6 9 ...

  9. Spring RedisTemplate操作-注解缓存操作(11)

    @Service @CacheConfig(cacheNames="user") public class RedisAn { public Map<String, User ...

  10. pycharm sql语句警告

    产生原因为没有配置数据库,配置数据库,似乎没什么作用 那么,直接去掉他的警告提示 找到setting->editor->inspections,然后找到右边sql下的 No data so ...