欢迎来到天天文库
浏览记录
ID:37577000
大小:2.12 MB
页数:27页
时间:2019-05-11
《清华大学c++课件第13章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十三章MFC库与Windows程序开发概述清华大学郑莉C++语言程序设计2本章主要内容Windows程序的基本结构MFC库简介使用VisualC++开发Windows程序3Windows程序的基本结构开始执行初始化应用初始化和创建应用窗口进入消息循环并从消息队列得到一个消息当前消息是否“退出”?终止执行程序是否定义了对此消息的处理进行默认处理处理消息否否是是4WinMain()函数初始化应用初始化和创建应用窗口进入应用程序的消息循环5窗口过程WndProc()执行窗口的消息处理:分析消息信息,决定应用程序如何
2、处理消息或响应一个事件。6MFC库类库是一个可以在应用程序中使用的相互关联的类的集合。MFC库——Microsoft基本类库是一个Windows应用程序框架,它定义了应用程序的结构,并实现了标准的用户接口:管理窗口、菜单、对话框,实现基本的输入/输出和数据存储。MFC库简介7应用程序框架应用程序框架是一种类库的超集在程序运行时,流程的控制多数是由框架实现的。应用MFC框架来构造应用程序时,程序员的角色就是提供应用程序专用的代码,并指定这些代码是用来响应哪些消息和命令的,以使框架能够在消息和代码间建立联系。MFC
3、库简介8"文档—视图"结构应用程序框架的核心是"文档—视图"结构。MFC通过"文档—视图"结构为应用程序提供一种将数据与视图相分离的存储方式。文档类的作用是将应程序的数据保存在文档类对象中,以及从磁盘文件中读或向磁盘文件中写数据。视图类的作用是显示数据和编辑数据。MFC库简介9使用VisualC++开发Windows程序建立一个应用程序框架观察自动生成的应用程序构造应用程序的用户接口将菜单映射到消息处理函数将工具栏按钮映射到命令测试自己编写的消息处理函数增加对话框初始化、验证和提取对话框中的数据创建新增的类添加
4、现成的组件到应用程序中实现自己的文档类实现Open、Save和SaveAs命令实现视图类改进缺省的打印增加屏幕滚动创建表单视图创建数据库表单构造(Build)、测试和调试应用程序例:人员信息管理程序用MFC设计一个人员信息管理程序的界面通过对话框输入人员信息在窗口中显示人员信息10Step1:建立MFC工程11选中工程类型Step2:用向导配置工程12选择应用程序类型Step3:添加对话框13资源视图Step4:为对话框添加类14输入类名Step5:向对话框中添加控件15Step5:向对话框中添加控件16使用工
5、具箱添加控件在属性列表中设置窗口文字Step6:为文本框添加变量17变量名变量类型Step7:编辑菜单18添加新的菜单项Step8:为菜单项添加事件处理程序19选择事件处理程序所属类InputData菜单项处理(1)constchar*constEMPLOYEE_FILE_NAME="employee.txt";voidCMy13_1View::OnTestInputdata(){Managerm1;Techniciant1;SalesManagersm1;Salesmans1;vector6、>employees;employees.push_back(&m1);employees.push_back(&t1);employees.push_back(&sm1);employees.push_back(&s1);CInputDialoginput;input.DoModal();//设置姓名m1.setName(input.m_str1.GetString());t1.setName(input.m_str2.GetString());sm1.setName(input.m_str3.GetStri7、ng());s1.setName(input.m_str4.GetString());20InputData菜单项处理(2)t1.setWorkHours(input.m_hours);//设置工作时间sm1.setSales(input.m_ss1);//设置本月的销售总额s1.setSales(input.m_ss2);//设置本月销售额ofstreamout(EMPLOYEE_FILE_NAME);//创建一个输出文件流对象for(vector::iteratoriter=emplo8、yees.begin();iter!=employees.end();++iter){(*iter)->promote();(*iter)->pay();//计算月薪out<<(*iter)->getName()<<“编号”<<(*iter)->getIndividualEmpNo()<<“,级别为”<<(*iter)->getGrade()<<“级,本月工资"<<(*iter)->g
6、>employees;employees.push_back(&m1);employees.push_back(&t1);employees.push_back(&sm1);employees.push_back(&s1);CInputDialoginput;input.DoModal();//设置姓名m1.setName(input.m_str1.GetString());t1.setName(input.m_str2.GetString());sm1.setName(input.m_str3.GetStri
7、ng());s1.setName(input.m_str4.GetString());20InputData菜单项处理(2)t1.setWorkHours(input.m_hours);//设置工作时间sm1.setSales(input.m_ss1);//设置本月的销售总额s1.setSales(input.m_ss2);//设置本月销售额ofstreamout(EMPLOYEE_FILE_NAME);//创建一个输出文件流对象for(vector::iteratoriter=emplo
8、yees.begin();iter!=employees.end();++iter){(*iter)->promote();(*iter)->pay();//计算月薪out<<(*iter)->getName()<<“编号”<<(*iter)->getIndividualEmpNo()<<“,级别为”<<(*iter)->getGrade()<<“级,本月工资"<<(*iter)->g
此文档下载收益归作者所有