清华大学c++第13章ppt课件_第1页
清华大学c++第13章ppt课件_第2页
清华大学c++第13章ppt课件_第3页
清华大学c++第13章ppt课件_第4页
清华大学c++第13章ppt课件_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第十三章第十三章 MFCMFC库与库与WindowsWindows程序开发概述程序开发概述清华大学清华大学 郑郑 莉莉C+言语程序设计C+语言程序设计清华大学 郑莉本章主要内容本章主要内容lWindows程序的根本构造程序的根本构造lMFC库简介库简介l运用运用Visual C+开发开发Windows程序程序C+语言程序设计清华大学 郑莉Windows程序的根本构造程序的根本构造开场执行初始化运用初始化和创建运用窗口进入音讯循环并从音讯队列得到一个音讯当前音讯能否“退出?终止执行程序能否认义了对此音讯的处置进展默许处置处置音讯否否是是C+语言程序设计清华大学 郑莉WinMain()函数函数l初

2、始化运用初始化运用l初始化和创建运用窗口初始化和创建运用窗口l进入运用程序的音讯循环进入运用程序的音讯循环C+语言程序设计清华大学 郑莉窗口过程窗口过程WndProc()执行窗口的音讯处置:执行窗口的音讯处置:分析音讯信息,决议运用程序如何分析音讯信息,决议运用程序如何处置音讯或呼应一个事件。处置音讯或呼应一个事件。C+语言程序设计清华大学 郑莉MFC库库l类库是一个可以在运用程序中运用的类库是一个可以在运用程序中运用的相互关联的类的集合。相互关联的类的集合。lMFC库库Microsoft 根本类库是一根本类库是一个个Windows运用程序框架,它定义了运用程序框架,它定义了运用程序的构造,并

3、实现了规范的用运用程序的构造,并实现了规范的用户接口:户接口:l管理窗口、菜单、对话框,实现根本管理窗口、菜单、对话框,实现根本的输入的输入/输出和数据存储。输出和数据存储。MFC库简介C+语言程序设计清华大学 郑莉运用程序框架运用程序框架l运用程序框架是一种类库的超集运用程序框架是一种类库的超集l在程序运转时,流程的控制多数是由在程序运转时,流程的控制多数是由框架实现的。框架实现的。l运用运用MFC框架来构造运用程序时,程框架来构造运用程序时,程序员的角色就是提供应用程序公用的序员的角色就是提供应用程序公用的代码,并指定这些代码是用来呼应哪代码,并指定这些代码是用来呼应哪些音讯和命令的,以使

4、框架可以在音些音讯和命令的,以使框架可以在音讯和代码间建立联络。讯和代码间建立联络。MFC库简介C+语言程序设计清华大学 郑莉文档文档视图视图构造构造l运用程序框架的中心是运用程序框架的中心是文档文档视图视图构造。构造。MFC经过经过文档文档视图视图构造为构造为运用程序提供一种将数据与视图相分运用程序提供一种将数据与视图相分别的存储方式。别的存储方式。l文档类的作用是将应程序的数据保管文档类的作用是将应程序的数据保管在文档类对象中,以及从磁盘文件中在文档类对象中,以及从磁盘文件中读或向磁盘文件中写数据。读或向磁盘文件中写数据。l视图类的作用是显示数据和编辑数据。视图类的作用是显示数据和编辑数据

5、。MFC库简介C+语言程序设计清华大学 郑莉运用运用Visual C+开发开发Windows程序程序l建立一个运用程序框架建立一个运用程序框架l察看自动生成的运用程序察看自动生成的运用程序l构造运用程序的用户接口构造运用程序的用户接口l将菜单映射到音讯处置函数将菜单映射到音讯处置函数l将工具栏按钮映射到命令将工具栏按钮映射到命令l测试本人编写的音讯处置函数测试本人编写的音讯处置函数l添加对话框添加对话框l初始化、验证和提取对话框中的数据初始化、验证和提取对话框中的数据l创建新增的类创建新增的类l添加现成的组件到运用程序中添加现成的组件到运用程序中l实现本人的文档类实现本人的文档类l实现实现Op

6、en、Save和和Save As命令命令l实现视图类实现视图类l改良缺省的打印改良缺省的打印l添加屏幕滚动添加屏幕滚动l创建表单视图创建表单视图l创建数据库表单创建数据库表单l构造构造Build、测试和调试运用程序、测试和调试运用程序C+语言程序设计清华大学 郑莉例:人员信息管理程序例:人员信息管理程序l用用MFC设计一个人员信息管理程序的设计一个人员信息管理程序的界面界面l经过对话框输入人员信息经过对话框输入人员信息l在窗口中显示人员信息在窗口中显示人员信息C+语言程序设计清华大学 郑莉Step 1: 建立建立MFC工程工程选中工程类型C+语言程序设计清华大学 郑莉Step 2: 用导游配置

7、工程用导游配置工程选择运用程序类型C+语言程序设计清华大学 郑莉Step 3: 添加对话框添加对话框资源视图C+语言程序设计清华大学 郑莉Step 4: 为对话框添加类为对话框添加类输入类名C+语言程序设计清华大学 郑莉Step 5: 向对话框中添加控件向对话框中添加控件 C+语言程序设计清华大学 郑莉Step 5: 向对话框中添加控件向对话框中添加控件 运用工具箱添加控件在属性列表中设置窗口文字C+语言程序设计清华大学 郑莉Step 6: 为文本框添加变量为文本框添加变量变量名变量类型C+语言程序设计清华大学 郑莉Step 7: 编辑菜单编辑菜单添加新的菜单项C+语言程序设计清华大学 郑莉S

8、tep 8: 为菜单项添加事件处置程序为菜单项添加事件处置程序选择事件处置程序所属类C+语言程序设计清华大学 郑莉Input Data菜单项处置菜单项处置(1)const char const char * * const EMPLOYEE_FILE_NAME = employee.txt; const EMPLOYEE_FILE_NAME = employee.txt;void CMy13_1View:OnTestInputdata() void CMy13_1View:OnTestInputdata() Manager m1;Manager m1;Technician t1;Technic

9、ian t1;SalesManager sm1;SalesManager sm1;Salesman s1;Salesman s1;vectorEmployee vector employees; employees;employees.push_back(&m1);employees.push_back(&m1);employees.push_back(&t1);employees.push_back(&t1);employees.push_back(&sm1);employees.push_back(&sm1);employees.push_b

10、ack(&s1);employees.push_back(&s1);CInputDialog input;CInputDialog input;input.DoModal();input.DoModal();/设置姓名设置姓名m1.setName(input.m_str1.GetString();m1.setName(input.m_str1.GetString();t1.setName(input.m_str2.GetString();t1.setName(input.m_str2.GetString();sm1.setName(input.m_str3.GetString(

11、);sm1.setName(input.m_str3.GetString();s1.setName(input.m_str4.GetString();s1.setName(input.m_str4.GetString();C+语言程序设计清华大学 郑莉Input Data菜单项处置菜单项处置(2)t1.setWorkHours(input.m_hours); /t1.setWorkHours(input.m_hours); /设置任务时间设置任务时间sm1.setSales(input.m_ss1);/sm1.setSales(input.m_ss1);/设置本月的销售总额设置本月的销售总额s

12、1.setSales(input.m_ss2);/s1.setSales(input.m_ss2);/设置本月销售额设置本月销售额ofstream out(EMPLOYEE_FILE_NAME);ofstream out(EMPLOYEE_FILE_NAME);/创建一个输出文件流对象创建一个输出文件流对象for (vectorEmployee for (vector:iterator iter = employees.begin();:iterator iter = employees.begin();iter != employees.end();iter != employees.end

13、();+iter) +iter) ( (* *iter)-promote();iter)-promote();( (* *iter)-pay(); iter)-pay(); /计算月薪计算月薪out (out getName() getName() “编号编号 getIndividualEmpNo() getIndividualEmpNo() “,级别为,级别为 ( getGrade()getGrade() “ “级,本月工资级,本月工资 ( getAccumPay() getAccumPay() endl; out.close();out.close(); C+语言程序设计清华大学 郑莉Ou

14、tput Data菜单项处置菜单项处置void CMy13_1View:OnTestOutputdata() void CMy13_1View:OnTestOutputdata() ifstream in(EMPLOYEE_FILE_NAME);ifstream in(EMPLOYEE_FILE_NAME);/创建一个输入文件流对象创建一个输入文件流对象if (!in) if (!in) MessageBox(File doesnt existed!);MessageBox(File doesnt existed!);return;return; /从文件读入人员信息从文件读入人员信息CCli

15、entDC dc(this);CClientDC dc(this);int i = 0;int i = 0;while (true) while (true) string line;string line;getline(in, line);getline(in, line);if (!in) break;if (!in) break;dc.TextOut(100, 100, dc.TextOut(100, 100, 人员信息管理系统:人员信息管理系统:););dc.TextOut(100, 150 + 30 dc.TextOut(100, 150 + 30 * * (i+), line.c_str(); (i+), line.c_str(); in.close();in.close(); C+语言程序设计清华大学 郑莉Step 9: 添加添加Employee相关文件相关文件l将将Employee.h和和Employee.cpp参与参与工程工程l在在13_1View.cpp中添加以下指令:中添加以下指令:l#include Employee.hl#include InputDialog.hl#include l#include l#include lusing namespace std;C+语言程序设计清华大学 郑

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论