MFC对话框程序设计详解

上传人:飞*** 文档编号:24846529 上传时间:2017-12-07 格式:DOC 页数:17 大小:456.50KB
返回 下载 相关 举报
MFC对话框程序设计详解_第1页
第1页 / 共17页
MFC对话框程序设计详解_第2页
第2页 / 共17页
MFC对话框程序设计详解_第3页
第3页 / 共17页
MFC对话框程序设计详解_第4页
第4页 / 共17页
MFC对话框程序设计详解_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《MFC对话框程序设计详解》由会员分享,可在线阅读,更多相关《MFC对话框程序设计详解(17页珍藏版)》请在金锄头文库上搜索。

1、MFC 对话框程序设计详解(朱从旭 老师)1. 利用 MFCAppWizard(exe)建立程序框架注意:请各位同学新建的“工程名称”用自己的全学号命名(这里假定学号是“123” ):图 1 “新建”对话框之新建“工程”图 2 选择“程序类型”图 3 选择“程序类型”续 1图 4 选择“程序类型”续 2图 5 “程序类”总结图 6 程序最后总结图 1.7 在开发环境下看程序的界面2. 设计程序的界面图 2.1 在开发环境下调出“控件”工具箱图 2.2 在程序的“界面”中删除不要的控件图 2.3 用鼠标在“控件”工具箱里单击“静态文本”控件,然后在界面上画出一个“静态文本”控件 (Static)

2、,然后右击该控件并单击“属性”菜单图 2.4 在弹出的 “属性”对话框中指定该控件的 ID(名称) 、标题(可见内容)图 2.5 按照图 2.12.4 的方法画出一个编辑框(EDIT) ,并在它的“属性”对话框中指定该控件的 ID(名称)图 2.6 按照图 2.12.4 的方法画出一个命令按钮(BUTTON) ,并在它的“属性”对话框中指定该命令按钮控件的 ID(名称) 、标题图 2.7 按上述方法画出本程序的所有控件;同时将原有“确定”控件的标题改为“添加学生” ,将原有“取消”控件的标题改为“退出程序”3. 设置“消息映射 Message Maps”和“成员变量 Member Variab

3、les”3.1 从“查看”菜单/“建立类向导 ”引出“MFC ClassWizard”对话框(图 3.1) ;图 3.1 “MFC ClassWizard”对话框3.2 为每个编辑框(Edit)设置成员变量(Member Variables)以“学号”框设置成员变量为例:在图 3.1 中,选“Member Variables”标签;然后在控件列表框中选定“Number_EDIT” ,并单击“Add Variable按钮,在弹出的“Add Member Variable对话框中,指定它的关联变量的名字为 m_1(也可以是其它名字),关联变量的数据类型为int, 如图 3.2 所示。按此法为每个编

4、辑框指定一个关联变量(含名字、数据类型) 。图 3.2 设置编辑框的关联变量(变量名、数据类型)3.3 为每个命令按钮(Button)设置消息映射(Message Maps)以“添加学生”按钮设置鼠标单击的消息映射为例:在图 3.1 中,选“Message Maps”标签;然后在控件列表框中选定 “Add_BUTTON”,在“Message”列表框中选定“BN_CLICKED”;并单击“ Add Function按钮; 如图 3.3 所示。图 3.3 为 Add_BUTTON 按钮设置消息映射在弹出的图 3.4“Add Member Function 对话框中,指定函数名字(如 OnAddBu

5、tton);单击“OK”按钮。按此法为其余的每个命令按钮分别指定一个成员函数;每个按钮对鼠标单击消息关联的成员函数名分别指定为表 2 所示的名称。图 3.4 为 Add_BUTTON 按钮设置的成员函数名(OnAddButton)至此,程序界面基本上已经设置好。用户可以运行程序,即可看到图 3.5 所示的程序界面;但是用户单击界面上的任何按钮时,程序不能执行任何功能,那是因为我们还没有写一句程序代码。接下来的事情将是为程序写语句(代码) 。图 3.5 程序运行时的界面为了下一步写程序的方便,我们需要记住界面上控件的一些关键信息。为清楚起见,在此将这些关键信息列于表 1表 2 中:表 1 是每个

6、编辑框的名字、对应关联变量名;表2 是每个命令按钮的名字、鼠标单击消息所关联的成员函数名。表 1. 每个编辑框的名字、对应关联变量名编辑框描述的内容 编辑框的名称 编辑框的关联变量名 关联变量的数据类型学号 Number_EDIT m_1 int姓名 Name_EDIT m_2 Cstring语文 Chinese_EDIT m_3 int数学 Math_EDIT m_4 int英语 English_EDIT m_5 int输出姓名 OutName_EDIT m_6 Cstring输出总分 OutTotal_EDIT m_7 int输出平均分 OutAverage_EDIT m_8 Int指定学

7、号值 Specify_EDIT m_9 int表 2. 每个命令按钮的名称、鼠标单击消息关联的成员函数名按钮的功能描述 按钮的名称 按钮鼠标单击消息关联的成员函数名添加学生 Add_BUTTON OnAddButton退出程序 Exit_BUTTON OnExitButton查找指定学号学生并输出 Search_BUTTON1 OnSchearButton1查找总分最高学生输出 Search_BUTTON2 OnSchearButton2查找总分最低学生输出 Search_BUTTON3 OnSchearButton3删除指定学号学生全部信息 Delete_BUTTON OnDeleteBut

8、ton4. 编写程序代码现在,单击开发环境界面左半窗下面的“FileView”标签,再双击“Source Files”下面的文件名“123Dlg.cpp” ,即可看到系统自动生成了每个消息的关联成员函数的框架代码。编程人员要做的事就是在相应函数体内填写所需要的程序代码;当然,用户还得事先为整个程序的“123.cpp”源文件以及“123.h”头文件写一些代码。下面给出一些主要代码,供参考,尤其注意关键代码的注释意思。4.1 头文件“123.h”(学号.h, 其内容是定义一个学生公共课程的“类”:c123)/ 将下列“类定义”代码添加到系统自动生成的头文件“ 123.h”原有代码末尾class c

9、123 /要求类名的命名规则为 “C你的学号”protected:int Number; /学生学号int Chinese, Math, English; /语文、数学、英语三科成绩int Total, average; /三科的总分、平均分,public:char Name20; /学生姓名 c123(int Num, char *pc, int Eng, int Chi, int Mat);c123( ); / 类的 2 个重载构造函数: c123c123( );/ 类的 1 个析构函数/ 以下为读取成员变量值的函数,均以 getXXX 形式命名int getNum( )return Nu

10、mber;char *getName()return Name;int getEng()return English;int getChi()return Chinese;int getMat()return Math;/ 以下为设置成员变量值的函数,均以 setXXX 形式命名void setNum(int x) Number=x; void setEng(int x) English=x; void setChi(int x) Chinese=x; void setMat(int x) Math=x; int getTotal() return English+Chinese+Math;i

11、nt getAverage()return (English+Chinese+Math)/3; 4.2 源文件 123.cpp (对类 c123 的构造函数进行实现)#include stdafx.h /VC+程序要包含这个文件,而且要先包含#include 123.h /123.h头文件放在(#include stdafx.h)的后面#include string.h / 此句加在上面两句之后,包含字符处理库函数的头文件/ 以下语句添加到系统已有语句后面/类 c123 的构造函数 c123( )实现,此代码添加到系统自动生成的原有代码末尾c123:c123(int Num, char *pc

12、, int Eng, int Chi, int Mat) Number=Num; /给 c123 类成员变量 Number 赋值(即设置“ 学号”数据)strcpy(Name, pc); /字符串不能直接赋值,要调用 C+库函数 strcpy()进行复制English=Eng; /给类 c123 的 English 成员变量赋值(即设置 “英语” 课成绩)Chinese=Chi; /给类 c123 的 Chinese 成员变量赋值(即设置“语文”课成绩)Math=Mat; /给类 c123 的 Math 成员变量赋值(即设置“ 数学”课成绩)Total=Eng+Chi+Mat; /总分 Tot

13、al 的值是算出来的average=(Eng+Chi+Mat)/3; /平均分 average 的值也是算出来的4.3 源文件 123Dlg.cpp 中按钮单击消息对应的成员函数功能实现/本程序用对象数组可处理 100 位以内学生的信息,自己添加的语句我用红色突出显示#include stdafx.h #include 123.h #include 123Dlg.h #include math.h /自己添加的语句,此句加在上面两句之后,/ 紧接着添加如下两句,定义对象数组 MyObj100和全局变量 ic123 MyObj100; /定义类 c123 的 100 个对象, 即对象数组 MyO

14、bjint i = -1; /定义外部变量 i,统计当前对象总数/此处省略系统自动生成的其它内容,不改动,在这些内容后的相关函数中添加语句/只要在这些内容的后面相关函数中添加一些自己写的功能语句(红色语句为自己写的)void CMy123Dlg:OnAddButton() /添加学生信息/ TODO: Add your control notification handler code herei +;UpdateData(TRUE); / 最重要的句子之一,记住其功能:是实现数据输入功能/ UpdateData(TRUE)将控件中的数据传递给相应的关联变量:m_1,m_2 等MyObji.s

15、etNum(m_1);strcpy(MyObji.Name, m_2); /必须将 c123 类的 Name 变量定义为 public 的,/才可以这样直接访问 MyObji.NameMyObji.setChi(m_3); MyObji.setMat(m_4);MyObji.setEng(m_5); void CMy123Dlg:OnDeleteButton() /删除学生信息/ TODO: Add your control notification handler code hereUpdateData(TRUE); /将控件中的数据传递给相应的关联变量/ 主要是为了使 m_9 得到第 9 个 Edit 框里面的内容) ;要删除的学号是 m_9int n, k; /n 做循环变量, k 记录学号等于待查学号 m_9 的对象数组元素的下标k=-1; /给 k 初始化一个负数for (n=0;nmax) max=MyObjn.getTotal( ); k=n;m_6=MyObjk.Name;m_7=MyObjk.getTotal( ); m_8=MyObjk.getAverage( );UpdateData(FALSE); /将相应的关联变量值传递给控件vo

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号