中南大学本科生课程设计(实践)任务书、设计报告(大学计算机基础)题目MFC程序设计实践报告学生姓名张雪宁指导教师童键学院土木工程学院专业班级土木国际1602班学生学号1209160225计算机基础教学实验中心2017年6月26日一、任务描述这次实践主要采用的是自主学习的方式,在我们已有的C++知识基础上,自学MFC编程,并完成《C++语言课程设计任务书》中指定任务与要求,在这次实践中,要求学会使用visualC++MFC编程来完成《C++语言课程设计任务书》中的任务,任务涵盖以基本对话框为应用程序的框架,完成单文档界面(SDI)应用程序。要求学会运用常用的基本控件,如静态文本框、命令按钮、编辑框、复选框、列表框、组合框、滚动条等。本次实践可分为两个主要内容:1、基于对话框的Windows应用程序:这部分以知识要点掌握与编程实例主辅结合的方式求我们基本掌握基于对话框的应用程序的创建过程,建立基于对话框的MFC应用程序框架,放置控件并设置控件属性,以及为控件连接变量(即为控件命名),添加并且编写消息处理函数。在这部分实践中,按照任务书中要求按照任务书所给的实例,要求基本掌握基于对话框的MFC应用程序中各常用的基本控件的使用。2、文档/视图结构应用程序:文档/视图结构的思想是将数据的管理与显示分离,其中文档用于管理应用程序的数据,而视图是用户界面,用于显示、打印文档中的数据,并管理与用户的交互。在这部分实践过程中,要求对任务书中介绍的几种SDI结构的典型应用程序来了解其结构及设计方法,学习和实践了典型应用包括:利用画笔、画刷等工具及位图处理的方法实现文字和图形的输出。利用定时器控件制作动画程序。对鼠标和键盘进行编程的基本方法。文件、字体、颜色等几种通用对话框的使用方法及自定义对话框的设计、调用方法以及菜单的设计方法。3、多文档界面(MDI)应用程序:这类程序可以同时打开多个文档并进行处理,处理的过程中很容易地进行切换。要求将1、2两点中所涉及到的程序,任选3到5个,做成一个综合程序,要求通过菜单调用各部分功能。可自行组织和发挥,使其安排合适。二、系统设计思想对话框是一种特殊类型的窗口,绝大多数Windows程序都通过对话框与用户进行交互。在VisualC++中,对话框既可以单独组成一个简单的应用程序,又可以成为文档/视图结构程序的资源。文档/视图结构的思想是将数据的管理与显示分离,其中文档用于管理应用程序的数据,而视图是用户界面,用于显示、打印文档中的数据,并管理与用户的交互。SDI具有文档/视图结构的应用程序框架,该框架包括应用程序类、窗口框架类、文档类和视图类,编程的任务是在文档类和视图类中添加适当的代码。其中文档类中一个重要的成员函数是OnNewDocument(),用户在此添加代码完成对数据的初始化;而视图类中最重要的成员函数是OnDraw(),通过在该函数中添加代码实现窗口内容的输出。三、系统功能编写的不同的小程序拥有不同的功能。以下是不同小程序对应的功能。1、单击“复制”按钮,则把上面的编辑框中的内容复制到下面的编辑框中;单击“结束”按钮,则退出程序的运行。2、输入一元二次方程ax2+bx+c=0的系数a、b、c,计算并输出两个根x1、x2。3、对列表框进行项目添加、修改和删除操作的应用程序4、选定了“日期”或“时间”复选框,则在对应的只读编辑框中显示系统当前日期或时间。5、击“确定”按钮后,在列表框中显示选择的信息。6、-2π~2π之间的sin曲线。7、按下鼠标右键画圆,按住鼠标左键移动画线。8、定时器控制蝴蝶在窗口中飞舞9、用户单击左键,则弹出输入成绩对话框,选择OK后平均成绩和总分在窗口的客户区输出。10、设计如图所示的菜单,并编写相应用的消息处理函数。四、设计过程以第一题为例,介绍其设计过程。(1)建立基于对话框的MFC应用程序框架。①选择“文件|新建”命令;②在“工程”选项卡中,选定“MFCAppWizard(exe)”,输入工程名称,选择“确定”。③选定“D基本对话”,即创建基于对话框的应用程序,选择“完成”。(2)放置控件•删除原有的控件。•放置所需的控件:两个编辑框和两个命令按钮。方法是:先单击控件工具栏上的控件图标选择所需的控件,然后在对话框设计界面上按住鼠标左键拖拉出所需要的大小后释放。(3)设置控件属性选定控件,在其快捷菜单中选择“属性”命令,在弹出如图所示的对话框中进行设置。上面编辑框的属性设置为:•选定“Multiline”复选框,编辑框中可以输入多行文本。•选定“Verticalscroll”和“AutoVscroll”,编辑框将有垂直滚动条。•选定“Wantreturn”。下面编辑框属性的设置与上面编辑框基本一样,只是可以不选定“Wantreturn”。(4)连接变量为控件连接变量就是为控件起一个名称。每一个控件都是一个对象,调用MFC类库中的函数都是通过对象来实现的。为IDC_EDIT1连接变量m_e1的步骤为:①在IDC_EDIT1编辑框的快捷菜单中选“建立类向导”,弹出“MFCClassWiard”对话框。②在“MemberVariables”中,选定“IDC_EDIT1”,再选择“AddVariable”命令。③在“AddMemberVariable”对话框中输入以下的数据:MemberVariablename(内存变量名):m_e1;Category(类别):Control;Variabletype(类型):Cedit用同样的方法再为IDC_EDIT2连接一个变量m_e2。(5)添加并且编写消息处理函数。本例要求单击“复制”按钮后上面编辑框中的内容复制到下面的编辑框中。也就是说,在程序运行时,在“复制”按钮上发生单击事件后,Windows向对话框发出了一个BN_CLICKED消息,CTESTDlg类应有一个处理该消息的函数。添加和编写这个消息处理函数的过程是:①双击“复制”按钮,弹出的“AddMemberFunction”对话框,输入函数名(缺省函数名为OnButton1),选择“确定”按钮后,添加了一个空函数。另一个方法是在“MFCClassWiard”对话框“MessageMaps”选项卡中,选定IDC_BUTTON1和BN_CLICKED消息,然后选择“AddFunction”按钮即可。五、运行情况经过多次的修改和完善,编译后各程序均能够正常运行,并且很好的发挥其设计初衷的作用。与预想中的系统功能相符。六、心得体会本次的MFC实践课,让我收获了很多。因为实践课的时间很紧张,所以一开始显得有点无从下手,甚至有害怕和畏难的情绪存在,对自己很没有信心。即使已经有了一个学期的C++基础知识的学习,但MFC对于我们来说任然是一个崭新的领域。我觉得实践课带给我们的,不仅仅是如何使用VisualC++进行MFC编程这一项技能,更是如何自我学习与自我提升的又一次实践。通过这次实践,我懂得了如何用MFC编写可视化界面的应用程序,加强了对C++的认识,巩固了已有的知识,从而提升了逻辑思考能力。也让我们对MicrosoftVisualC++6.0又有了更进一步的认识和体会。七、参考文献1、杨长兴,刘卫国.C++程序设计.北京:中国水利水电出版社,20122、刘卫国,杨长兴.C++程序设计实践教程.北京:中国水利水电出版社,20123、MFC编程基础第1章基于对话框的Windows应用程序第2章文档/视图结构应用程序