实习(第4天_对话框与常用控件)_第1页
实习(第4天_对话框与常用控件)_第2页
实习(第4天_对话框与常用控件)_第3页
实习(第4天_对话框与常用控件)_第4页
实习(第4天_对话框与常用控件)_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

2018/2/12,第4天 对话框与常用控件,掌握Button、Edit Box和Static Text控件的创建和使用方法掌握基于对话框的应用程序的编程技术掌握模式对话框、非模式对话框和通用对话框的设计与调用,教学目标,2018/2/12,教学内容,MyCalculator程序 演示开发MyCalculator程序 口令对话框 通用对话框 常用控件介绍,2018/2/12,4.1 MyCalculator程序,返回目录,程序运行结果,程序运行演示,2018/2/12,4.2 开发MyCalculator程序,4.2.1 创建工程4.2.2 可视化设计4.2.3 为编辑框IDC_DISPLAY引入变量4.2.4 为CMyCalculatorDlg类添加数据成员4.2.5 为BUTTON按钮的BN_CLICKED事件添加响应函数4.2.6 编写程序代码4.2.7 技术要点4.2.8 程序优化,返回目录,2018/2/12,4.2.1 创建工程,返 回,创建MyCalculator工程的步骤: (1) 启动Visual C+6.0。从“File”菜单中选择“New” ; (2) 在New对话框中选择“Project”标签 ,然后指定工程类型MFC AppWizardexe、工程名MyCalculator和工程位置D:MyVC; (3) 点击“OK”按钮,弹出MFC AppWizard-Step 1对话框。选择“Dialog based”单选按钮,创建一个基于对话框的应用程序; (4) 单击“Finish” 按钮。此时Visual c+6.0将显示NewProject Information窗口; (5) 单击“OK” 按钮。于是,Visual C+6.0就会创建MyCalculator工程以及相关的所有文件。,2018/2/12,4.2.2 可视化设计,可视化设计,就用VC+自带的工具软件Winzards,制作计算器程序界面。即添加计算器中的数字、运算符等按钮和数字显示编辑框。 控件的两个要素:ID标识符和Caption文本,返 回,2018/2/12,4.2.3 为编辑框IDC_DISPLAY引入变量,为了能够在程序运行过程中,将输入的数据和计算的结果在编辑框上显示,必须为它引入一个变量,从而能够使编辑框以变量的形式出现在程序中。利用函数UpdateData(true)或UpdateData(false)就可达到目的。 在MFC ClassWizard对话框中,选择“Member Variable”标签为IDC_DISPLAY编辑框引入变量:CString m_display;,返 回,2018/2/12,4.2.4 为CMyCalculatorDlg类添加数据成员,为了实现计算器功能,我们需要向CMyCalculatorDlg类(即MyCalculatorDlg.h文件中)添加变量。变量属性和用途如下表。,返 回,2018/2/12,4.2.5 为Button按钮的BN_CLICKED事件添加响应函数,用MFC ClassWizard为对话框IDD_MYCALCULATOR_DIALOG中的所有Button按钮的BN_CLICKED事件添加处理函数,如表4-3所示。,返 回,2018/2/12,4.2.6 编写程序代码,1. 为数字“N”按钮的消息响应函数添加代码。算法设计如下:(1) 作为整数输入数字N时(N =0,9): m_second=m_second*10+N;(2) 作为小数输入数字N时(N =0,9): m_second=m_second+N*m_coff; m_coff *= 0.1; void CMyCalculatorDlg:OnButton8() if( m_coff = 1.0)/ 作为整数输入m_second = m_second*10 + 8;else /作为小数输入m_second = m_second + 8*m_coff; m_coff *= 0.1;UpdateDisplay(m_second);/更新编辑框的数据显示 完全类似,请读者为其它数字按钮的消息响应函数添加代码。,返 回,2018/2/12,2. 为运算符(+、-、*、/)按钮的消息响应函数添加代码,算法描述:(1)m_first与 m_second作m_operator运算后m_first;(2)0m_second;(3)m_first m_display (显示)(4)用当前点击的运算符 m_operator;(5)将小数的权值变量m_coff置1.0复位。以点击“+”运算符为例,在消息响应函数中编写如下代码。void CMyCalculatorDlg:OnButtonAdd() Calculate(); m_operator=+;,2018/2/12,void CMyCalculatorDlg:Calculate(void) switch(m_operator.GetAt(0) case +: m_first +=m_second;break;case -: m_first -=m_second;break;case *: m_first *=m_second;break;case /: if(fabs(m_second)m_first(5)将小数的权值变量m_coff置1.0。(6)输入的运算符 m_operator;void CMyCalculatorDlg:OnButtonEqual() Calculate(); m_first = 0.0; m_operator=+; ,2018/2/12,4在OnButtonSqrt()函数中,编写代码,void CMyCalculatorDlg:OnButtonSqrt() m_second = sqrt(m_second); UpdateDisplay(m_second);,2018/2/12,5. 为“C”和“1/X”按钮的消息响应函数编写代码,void CMyCalculatorDlg:OnButtonClear() m_first=0.0; m_second=0.0;m_operator = +; m_coff = 1.0;UpdateDisplay(0.0);void CMyCalculatorDlg:OnButtonReciprocal() if(fabs(m_second)Create(IDD_PASSWORD_DIALOG,this); m_Dlg-ShowWindow(SW_SHOW); /显示非模态对话框,对话框的调用,返 回,2018/2/12,4.3.2 编辑口令对话框资源,1. 创建对话框资源参照第2章中2.3.2节的方法,在MyHello工程中,新建一个ID(标识符)为“IDD_PASSWORD_DIALOG”、Caption为“口令”的对话框资源 2编辑对话框资源,返 回,2018/2/12,4.3.3 创建口令对话框类,返 回,为IDD_PASSWORD_DIALOG对话框创建一个新类。操作步骤如下: (1) 在IDD_PASSWORD_DIALOG对话框资源上单击鼠标右键,在弹出的快捷菜单中选择Class Wizard(或双击对话框,或通过菜单View/Class Wizard),弹出MFC ClassWizard对话框。在MFC ClassWizard对话框弹出后紧接着弹出Adding Class 对话框。 (2) 在Adding Class 对话框中确认墨认选择Create a new class,单击“OK”按钮,弹出New Class对话框。 (3) 在Name编辑框中输入新建类名CPasswordDialog,其它取墨认值。,2018/2/12,4.3.4 为口令编辑框引入变量,返 回,为IDC_PASSWORD_EDIT编辑框引入变量的步骤如下:(1) 在View菜单中选择ClassWizard菜单项。(2) 在MFC ClassWizard对话框中,选择”Member Variable”标签,作如下选择: Class name: CPasswordDialog Control IDs: IDC_PASSWORD_EDIT(3) 单击“Add Variable”按钮,此时,Visual C+6.0将显示一个Add Member Variable对话框,设置如下: Variable name: m_password Category: Value Variable type: Cstring(4) 单击Add Member Variable对话框的“OK”按钮,返回到MFC ClassWizard对话框,再单击MFC ClassWizard对话框的“OK”按钮。于是,Visual C+6.0就为编辑框IDC_PASSWORD_EDIT引入变量m_ password。,2018/2/12,4.3.5 调用口令对话框,返 回,在应用程序类的InitInstance()函数中编写调用口令对话框代码。1修改InitInstance()函数BOOL CMyHelloApp:InitInstance() m_pMainWnd-UpdateWindow();CPasswordDialog Dlg; /声明CpasswordDialog类的对象if(Dlg.DoModal() != IDOK)return false; if(Dlg.m_password != 123456)/口令设为字符串123456AfxMessageBox(“口令错误,);return false;return TRUE;2在MyHello.cpp的头部,加入下面的包含语句: #include PasswordDialog.h,2018/2/12,4.3.6 显示非模式对话框,返 回,请读者按以下要求编辑一菜单:ID:ID_NOMODALLESS;Caption: 非模式对话框。显示非模式对话框操作步骤如下:1在视图类中添加对话框成员指针class CMyHelloView : public Cview public: CPasswordDialog* m_pModallessDlg; ;在MyHelloView.h中加入:#include PasswordDialog.h,2018/2/12,返 回,2. 修改视类的构造函数和析构函数分别在视类的构造函数和析构函数中添加如下代码:CMyHelloView:CMyHelloView() m_pModallessDlg = NULL; /初始化指针CMyHelloView:CMyHelloView() if(m_pModallessDlg != NULL)delete m_pModallessDlg;/释放空间,2018/2/12,返 回,3编写调用非模式对话框代码(1)利用MFC ClassWizard,为菜单ID_NOMODALLESS添加了消息响应函数OnNomodalless()。(2)定位在OnNomodalless()函数,编写如下显示非模式对话框代码:void CMyHelloView:OnNomodalless() if(m_pModallessDlg = NULL m_pModallessDlg = new CPasswordDialog;m_pModallessDlg-Create(IDD_PASSWORD_DIALOG,this); m_pModallessDlg-ShowWindow(SW_SHOW);,2018/2/12,4.4 通用对话框,在应用程序设计中,除使用自定义的对话框之外,经常用到系统定义的通用对话框类。通用对话框类用于各种Windows常用应用程序中,执行各种标准操作。它们由CDialog类派生而来,其资源全部包含在WindowsSYSTEM目录下的COMMDLG.DLL动态链接库中。常用的通用对话框类有: CFileDialog 文件对话框类; CFontDialog 字体对话框类; CColorDialog 颜色对话框类; CPrintDialog 打印对话框类。,返 回,2018/2/12,4.4.1 CFileDialog类的使用方法,(1) 构造CFileDialog类的对象 ;(2) 调用成员函数DoModal调用对话框; (3) 应用程序可通过CFileDialog类的成员函数获得各种信息。 例如,调用图4-21所示的通用文件对话框的关键代码如下: CString strFilter = Dat Files (*.dat)|*.dat|All Files (*.*)|*.*|;CFileDialog FileDlg(true, NULL, NULL, OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT, (LPCSTR)strFilter, this);if (FileDlg.DoModal() != IDOK)return;CString strFileName = FileDlg.GetPathName();/打开文件strFileName,返 回,2018/2/12,4.5 常用控件介绍,4.5.1 Button控件 1. Button控件的

温馨提示

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

评论

0/150

提交评论