Skip to content

Commit 0b52156

Browse files
committed
整理MFC程序和视频脚本
0 parents  commit 0b52156

File tree

143 files changed

+5779
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

143 files changed

+5779
-0
lines changed

.gitignore

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Prerequisites
2+
*.d
3+
4+
# Compiled Object files
5+
*.slo
6+
*.lo
7+
*.o
8+
*.obj
9+
10+
# Precompiled Headers
11+
*.gch
12+
*.pch
13+
14+
# Compiled Dynamic libraries
15+
*.so
16+
*.dylib
17+
*.dll
18+
19+
# Fortran module files
20+
*.mod
21+
*.smod
22+
23+
# Compiled Static libraries
24+
*.lai
25+
*.la
26+
*.a
27+
*.lib
28+
29+
# Executables
30+
*.exe
31+
*.out
32+
*.app

README.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# MFC 绘图程序
2+
3+
## 1. 目录结构说明:
4+
5+
source 文件夹为程序的源码,Vistual Studio 2015 v140的平台。
6+
7+
document 文件夹为整个程序设计的讲解脚本。
8+
9+
## 2. 讲解脚本说明
10+
11+
该脚本是为老师录制 **MFC 课程设计** 视频编写的,每年大二学生都对这个课程设计困惑,当初我也是如此,所以我的指导老师决心录制一套视频来更好的帮助学生做好课程设计。出于对我的信任,这个任务交给了大三菜鸟的我 :smile:。但因作者个人能力有限,内容不足之处还望大家指出。
12+
13+
整个视频脚本共分为八讲。
14+
15+
1、 [课程设计分析](./document/1-课程设计分析.md)
16+
17+
2、[创建MFC应用程序](./document/2-创建MFC应用程序.md)
18+
19+
3、[类的设计和编写](./document/3-类的设计和编写.md)
20+
21+
4、[对话框的创建和使用](./document/4-对话框的创建和使用.md)
22+
23+
5、[程序的执行流程](./document/5-程序的执行流程.md)
24+
25+
6、[一些常见的错误](./document/6-一些常见的错误.md)
26+
27+
7、[课程设计延伸](./document/7-课程设计延伸.md)
28+
29+
8、[课程设计总结](./document/8-课程设计总结.md)
30+
31+
**第一讲 课程设计分析** 将带领同学们解读任务书,明确课程设计的任务。
32+
33+
**第二讲 创建MFC应用程序** 是详细的教同学们使用 VS 来创建MFC应用程序。
34+
35+
**第三讲 类的设计和编写** 将一步步分析类的设计,并给出一个类的具体实现。
36+
37+
**第四讲 对话框的创建和使用** 将详细讲解使用工具箱来搭建出一个对话框界面。
38+
39+
**第五讲 程序的执行流程** 将讲解MFC应用程序绘制图像的整个过程。
40+
41+
**第六讲 一些常见的错误** 是老师把学生们犯的一些很有代表性错误整理出来给大家讲解。
42+
43+
**第七讲 课程设计延伸** 是整个课程设计的升华,这部分内容不属于课程设计任务书的要求,只为更好的改良设计。
44+
45+
**第八讲 课程设计总结** 是对前面八讲内容的串联和总结。
46+
47+
*注:**MFC课程设计视频脚本完整版**只是对八讲内容的整合版本。*
48+
49+
## 3. 程序运行图
50+
51+
程序运行
52+
53+
![程序运行](./document/images/程序运行.png)
54+
55+
Ctrl + 鼠标左键绘图,鼠标左键双击已经绘制的图形,进行修改图形。
56+
57+
![绘图](./document/images/绘图.png)
58+
59+
鼠标右键双击已经绘制的图形,可以删除图形
60+
61+
![删除图形](./document/images/删除图形.png)
62+
63+
保存绘图,打开保存的文件
64+
65+
![保存绘图](./document/images/保存绘图.png)

document/1-课程设计分析.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# 第一讲(分析课程设计)
2+
3+
(形式:屏幕录制桌面,老师自我介绍)
4+
5+
同学们,大家好,我是本套 MFC 课程设计视频的讲解老师——刘波涛,大家可以叫我刘老师。
6+
7+
## 1. 为什么会有这套视频
8+
9+
(形式:屏幕录制桌面,老师聊聊本套视频的目的)
10+
11+
这是大家在学完《C语言》和《C++ 面向对象编程》两门课程之后的第一个课程设计,在往年课程设计指导中,老师发现很多同学对于课程设计比较迷茫,简言之,就是不知道做什么。
12+
13+
而一些基础比较好的同学,能做出来部分程序,但不清楚程序内部的运行原理。
14+
15+
所以老师决定出一套讲解 MFC 课程设计的视频,其目的不只是教大家完成本次的课程设计,相信对你以后的课程设计也会有指导作用。
16+
17+
## 2. 解读课设任务书
18+
19+
(形式:屏幕录制打开的任务书,老师解读文档)
20+
21+
在收到课程设计任务书后,我们要根据任务书上的要求来完成课程设计,下面老师就带领大家解读本次课程设计的任务书。
22+
23+
需要重点关注 **课程设计的要求** ,(鼠标移到 课程设计的功能要求,一边解读,一边鼠标跟随)本次课程设计是要求我们编制一个简单的图形编辑系统。
24+
25+
这个系统都有什么功能呢?可以添加、修改和删除图形元素,绘制下面这幅示例图中的图形。(鼠标放在示例图上)
26+
27+
大家可以看看这张图上的六种图形,有正方形 Square、矩形 Rectangle、正三角形 Triangle、圆形 Circle、椭圆形 Ellipse、文本 Text。
28+
29+
![六种图形](../document/images/六种图形.png)
30+
31+
通过对课程设计的要求分析,我们可以得出我们要做的是一个绘图程序,绘制正方形,圆形,文本等六种图形,功能是绘制新的图形,修改已有的图形,删除已有的图形。
32+
33+
具体怎么绘制,修改和删除呢?同学们,我们接着往下看。(鼠标接着图片下面的文字移动)
34+
35+
绘制一个图形,我们可以先找到图形的原点,也就是图形的中心点(鼠标指一指图上的点)。
36+
37+
如果绘制的图形是正方形,那么只要再给出正方形的边长,我们就可以确定这个正方形了。
38+
39+
另外还有图形的填充需要我们考虑,用什么模式填充,这里呢?就涉及到绘图的具体细节了。
40+
41+
我们在绘图的时候呢,在确定要绘图的位置之后,还需要确定图形画成什么模样,图形的边框是虚线还是实线?图形内是实心填充还是阴影填充?大家可以在纸上画一画想一想。
42+
43+
通过上面的讲解,我们已经知道了绘制图形需要一些参数,比如边长,边框类型,填充类型等等。
44+
45+
我们怎么输入这些参数呢?
46+
47+
我们之前写的程序都是Win32应用程序,比如刚开始学习编程时在控制台窗口输出的 “Hello,World!”,正式宣告我们踏入编程世界的大门,程序的输入输出都是在控制台中完成的。
48+
49+
而本次的课设,要求我们在一个参数对话框中来完成我们的参数输入,大家可以看一下任务书中的示例图。(鼠标指向图元属性对话框示例图)
50+
51+
![图元属性对话框示例图](../document/images/图元属性对话框示例图.png)
52+
53+
系统的功能是创建,修改,删除图形,具体的程序和用户的交互逻辑是按住 Ctrl键 + 点击鼠标左键来创建图形,鼠标左键双击编辑修改图形,鼠标右键双击删除图形。
54+
55+
关于图形类的设计,后面我们会专门有一讲来说。
56+
57+
任务书下面是一些辅助代码和一些安排说明,大家先看一看。
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# 第二讲(创建 MFC 应用程序)
2+
3+
(形式:VS 实际操作演示)
4+
5+
## 1. 创建 MFC 应用程序
6+
7+
这一讲,我们将创建我们的 MFC 应用程序
8+
9+
首先打开我们的开发工具,Vistual Studio 2010(边说边打开),同学们在电脑上装 VS2010 之后的版本都可以。
10+
11+
为了我们操作方便,我们先把我们的 VS2010 的某些视图调出来,打开 VS2010 上面的视图选项栏(边说边操作),找到**资源视图****属性窗口****工具箱**,把它们放在合适的地方,我习惯停靠在右边,**解决方案资源管理器**我习惯放在左边。
12+
13+
![调出视图](../document/images/调出视图.png)
14+
15+
下面我们就来新建一个项目(边说边操作),点击 **文件** —> **新建** —> **项目**,使用 **Visual C++ 模版**中的 **MFC** 模版,选择 **MFC应用程序**,输入**解决方案名称****项目名称**
16+
17+
![创建MFC应用程序](../document/images/创建MFC应用程序.png)
18+
19+
点击确定,下面我们就使用 MFC 的应用程序向导来创建我们的 MFC 应用程序。
20+
21+
MFC 应用程序向导,可以帮助我们快速搭建 MFC 应用程序所需的框架文件,我们通过它,可以更改 MFC 应用向导默认的项目设置。
22+
23+
![应用向导1](../document/images/应用向导1.png)
24+
25+
点击下一步(边说边操作),根据我们的课程设计任务书上的要求,我们的**应用程序类型****单个文档**类型,我们改一下。
26+
27+
注意这个 **文档/视图结构支持** 需要选中,因为视图是我们绘图的地方,文档是我们存放图形的地方。
28+
29+
单文档和多文档的区别,这里简单说一下。
30+
31+
先来说一下多文档程序,来看我们的 VS IDE,我们可以同时打开多个文件,鼠标点击切换到不同的文件编辑。(边讲解变演示)
32+
33+
![多文档举例](../document/images/多文档举例.png)
34+
35+
而单文档程序单个程序只能打开一个文件,操作一个文件,Windows 系统自带的记事本程序就是单文档程序。
36+
37+
很明显,单文档程序要相对简单些。
38+
39+
Unicode 库是选择代码的字符集编码,Unicode 是国际化的编码,默认选中。
40+
41+
**项目类型**默认就是 **MFC 标准**,关于 MFC 的使用呢?有两种,一种是 **在共享 DLL 中使用 MFC**,另一种是 **在静态库中使用 MFC**
42+
43+
这两种有什么区别呢?
44+
45+
在共享 DLL 中使用是在你运行 exe 程序时链接系统中的 DLL,也就是动态的链接,如果系统中没有所需的 DLL文件,程序就会运行失败。
46+
47+
而在静态库中使用 MFC,是将程序所需的 DLL 文件放在项目目录下,不管系统中有没有程序所需的 DLL文件,程序都可以正常运行,这是一种静态链接。
48+
49+
很显然,动态链接方式程序的体积要小于静态链接方式的程序。
50+
51+
我们在这里就选择动态链接的方式吧。
52+
53+
![应用向导2](../document/images/应用向导2.png)
54+
55+
点击下一步(边说边操作),因为我们选择的是单个文档类型,就不需要**复合文档支持**了,再次点击下一步。
56+
57+
文档模版属性,我们来看一下,主框架标题的名称和我们项目的名称一样,文档类型的名称也是,我们不需要改什么,直接点击下一步。
58+
59+
![应用向导3](../document/images/应用向导3.png)
60+
61+
**数据库支持**,我们的项目用不到数据库,所以我们的**数据库支持**选无,点击下一步。
62+
63+
**用户界面功能**,主框架样式,我们可以看一下,有粗框架,最大最小化框,最大最小化,这些同学们可以看一看,使用默认的设置即可,点击下一步。
64+
65+
![应用向导4](../document/images/应用向导4.png)
66+
67+
**高级功能**,有**打印和打印预览**,可以将我们绘制的图形打印出来,**Activex 控件**在这里我们用不到,可以不选择,点击下一步。
68+
69+
![应用向导5](../document/images/应用向导5.png)
70+
71+
最后一步,**生成的类**,这里我们可以看到生成了四个类,**CDrawingView****CDrawingApp****CDrawingDoc****CMainFrame**
72+
73+
其实应用程序还帮我们创建了一个说明本程序的关于对话框类,**CAboutDlg**,这个类在 Drawing.cpp 文件中,我们在后面会详细讲解这个对话框类。
74+
75+
在下面我们可以清楚的看到这四个类对应的 **类名****基类****.h 头文件****.cpp 源文件**
76+
77+
CDrawingView 的基类,默认是 CView 基类,我们可以选择带垂直和水平滚动条的 CScrollView 类,它是从 CView 类继承过来的。
78+
79+
![应用向导6](../document/images/应用向导6.png)
80+
81+
这里,老师先简单的说说这四个类的功能。(一边鼠标点击某个类,一边讲解)
82+
83+
CDrawingView 类,是负责程序界面上的图像改变的,我们将来的绘图就和这个类有关系。
84+
85+
CDrawingApp 类,是整个 MFC 应用程序的入口和开始文件,我们运行程序时,将先运行这个类中的开始方法。
86+
87+
CDrawingDoc 类,是负责存储程序界面上的图像信息的,这个类中有可以将对象序列化成二进制的方法,我们可以用这个方法实现保存操作,反过来,也可将序列化后的二进制文件中的信息恢复成具体的图形对象。
88+
89+
CMainFrame 类,是定义整个应用程序窗口框架的,前面我们使用类向导的过程中,有一步是选择 **用户界面功能** 的,这个就和这个类有关。
90+
91+
点击完成,我们的 MFC 应用程序就已经创建完成了,现在我们就可以点击运行程序,我们会看到有一个 Windows 窗口程序的样子。
92+
93+
到现在,我们并没有写一行代码,这是我们用应用程序向导创建出来的 MFC应用程序,但它没有任何的功能,我们的任务就是给这个半成品的应用程序添加我们想要的功能。
94+

0 commit comments

Comments
 (0)