资源预览内容
第1页 / 共34页
第2页 / 共34页
第3页 / 共34页
第4页 / 共34页
第5页 / 共34页
第6页 / 共34页
第7页 / 共34页
第8页 / 共34页
第9页 / 共34页
第10页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第4 4章 对话框与常用控件掌握ButtonButton、Edit Edit BoxBox和Static Static TextText控件的创建和使用方法掌握基于对话框的应用程序的编程技术掌握模式对话框、非模式对话框和通用对话框的设计与调用教学目标Visual C+Visual C+程序设计电子教案-王明福编VC对话框和常用控件 教学内容 MyCalculator程序演示开发MyCalculator程序口令对话框通用对话框 常用控件介绍 VC对话框和常用控件 4.14.1 MyCalculator程序返回目录v 程序运行结果v 程序运行演示VC对话框和常用控件 4.2 4.2 开发MyCalculatorMyCalculator程序 4.2.1 4.2.1 创建工程4.2.2 4.2.2 可视化设计4.2.3 4.2.3 为编辑框IDC_DISPLAYIDC_DISPLAY引入变量4.2.4 4.2.4 为CMyCalculatorDlgCMyCalculatorDlg类添加数据成员4.2.5 4.2.5 为BUTTONBUTTON按钮的BN_CLICKEDBN_CLICKED事件添加响应函数4.2.6 4.2.6 编写程序代码4.2.7 4.2.7 技术要点4.2.8 4.2.8 程序优化返回目录VC对话框和常用控件 4.2.1 4.2.1 创建工程 返 回创建MyCalculator工程的步骤:(1)启动VisualC+6.0。从“File”菜单中选择“New”;(2)在New对话框中选择“Project”标签,然后指定工程类型MFCAppWizardexe、工程名MyCalculator和工程位置D:MyVC;(3)点击“OK”按钮,弹出MFCAppWizard-Step1对话框。选择“Dialogbased”单选按钮,创建一个基于对话框的应用程序; (4) 单击“Finish” 按钮。此时Visual c+6.0将显示NewProjectInformation窗口;(5)单击“OK”按钮。于是,VisualC+6.0就会创建MyCalculator工程以及相关的所有文件。 VC对话框和常用控件 4.2.2 4.2.2 可视化设计 可视化设计,就用VC+自带的工具软件Winzards,制作计算器程序界面。即添加计算器中的数字、运算符等按钮和数字显示编辑框。控件的两个要素:ID标识符和Caption文本返 回VC对话框和常用控件 4.2.3 4.2.3 为编辑框IDC_DISPLAYIDC_DISPLAY引入变量 为了能够在程序运行过程中,将输入的数据和计算的结果在编辑框上显示,必须为它引入一个变量,从而能够使编辑框以变量的形式 出 现 在 程 序 中 。 利 用 函 数 UpdateData(true)或UpdateData(false)就可达到目的。 在MFC ClassWizard对话框中,选择“Member Variable”标签为IDC_DISPLAY编辑框引入变量:CString m_display;返 回VC对话框和常用控件 4.2.4 4.2.4 为CMyCalculatorDlgCMyCalculatorDlg类添加数据成员为了实现计算器功能,我们需要向CMyCalculatorDlg类(即MyCalculatorDlg.h文件中)添加变量。变量属性和用途如下表。数据类型数据变量名称数据的作用doublem_first存储一次运算的第一个数以及一次运算的结果doublem_second存储一次运算的第二个数doublem_coff存储小数点的系数权值CStringm_operator存储运算操作符返 回VC对话框和常用控件 4.2.5 4.2.5 为ButtonButton按钮的BN_CLICKEDBN_CLICKED事件添加响应函数 用MFC ClassWizard为对话框IDD_MYCALCULATOR_DIALOG中的所有Button按钮的BN_CLICKED事件添加处理函数,如表4-3所示。 Object IDsMessagesMember FunctionsIDC_BUTTON1BN_CLICKEDOnOnButton1()IDC_BUTTON9BN_CLICKEDOnOnButton9()IDC_BUTTON_POINTBN_CLICKEDOnButtonPoint()IDC_BUTTON_SIGNBN_CLICKEDOnButtonSign()IDC_BUTTON_ADD BN_CLICKEDOnButtonAdd() IDC_BUTTON_MINUS BN_CLICKEDOnButtonMinus() IDC_BUTTON_MUTIPLY BN_CLICKEDOnButtonMutiply() 返 回VC对话框和常用控件 4.2.6 4.2.6 编写程序代码 1. 1. 为数字“N 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);/更新编辑框的数据显示 完全类似,请读者为其它数字按钮的消息响应函数添加代码。返 回VC对话框和常用控件 2. 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=+;VC对话框和常用控件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=+; VC对话框和常用控件 4 4在OnButtonSqrt()OnButtonSqrt()函数中,编写代码 void CMyCalculatorDlg:OnButtonSqrt() m_second = sqrt(m_second); UpdateDisplay(m_second);VC对话框和常用控件 5. 5. 为“C C”和“1/1/X 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); /显示非模态对话框 对话框的调用返 回VC对话框和常用控件 4.3.2 4.3.2 编辑口令对话框资源 1. 1. 创建对话框资源参照第2章中2.3.2节的方法,在MyHello工程中,新建一个ID(标识符)为“IDD_PASSWORD_DIALOG”、Caption为“口令”的对话框资源 2 2编辑对话框资源 返 回VC对话框和常用控件 4.3.3 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,其它取墨认值。VC对话框和常用控件 4.3.4 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。VC对话框和常用控件 4.3.5 4.3.5 调用口令对话框 返 回在应用程序类的InitInstance()函数中编写调用口令对话框代码。1 1修改InitInstance()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 2在MyHello.cppMyHello.cpp的头部,加入下面的包含语句: #include PasswordDialog.h VC对话框和常用控件 4.3.6 4.3.6 显示非模式对话框 返 回请读者按以下要求编辑一菜单:ID:ID_NOMODALLESS;Caption:非模式对话框。显示非模式对话框操作步骤如下:1 1在视图类中添加对话框成员指针class CMyHelloView : public Cview class CMyHelloView : public Cview public: public: CPasswordDialog* m_pModallessDlg; CPasswordDialog* m_pModallessDlg; ;在MyHelloView.hMyHelloView.h中加入:# #include PasswordDialog.h include PasswordDialog.h VC对话框和常用控件返 回2. 修改视类的构造函数和析构函数 分别在视类的构造函数和析构函数中添加如下代码:CMyHelloView:CMyHelloView()m_pModallessDlg = NULL; /m_pModallessDlg = NULL; /初始化指针CMyHelloView:CMyHelloView() if(m_pModallessDlg != NULL) if(m_pModallessDlg != NULL)delete m_pModallessDlg;/delete m_pModallessDlg;/释放空间VC对话框和常用控件返 回3 3编写调用非模式对话框代码(1)利用MFCClassWizard,为菜单ID_NOMODALLESS添加了消息响应函数OnNomodalless()。(2)定位在OnNomodalless()函数,编写如下显示非模式对话框代码:voidCMyHelloView:OnNomodalless()if(m_pModallessDlg=NULL m_pModallessDlg=newCPasswordDialog;m_pModallessDlg-Create(IDD_PASSWORD_DIALOG,this);m_pModallessDlg-ShowWindow(SW_SHOW);VC对话框和常用控件 4.4 4.4 通用对话框 在应用程序设计中,除使用自定义的对话框之外,经常用到系统定义的通用对话框类。通用对话框类用于各种Windows常用应用程序中,执行各种标准操作。它 们 由 CDialog类 派 生 而 来 , 其 资 源 全 部 包 含 在WindowsSYSTEM目录下的COMMDLG.DLL动态链接库中。常用的通用对话框类有: C 文件对话框类; CFontDialog 字体对话框类; CColorDialog 颜色对话框类; CPrintDialog 打印对话框类。返 回VC对话框和常用控件 4.4.1 C4.4.1 C类的使用方法 (1) 构造C类的对象 ;(2) 调用成员函数DoModal调用对话框; (3) 应用程序可通过C类的成员函数获得各种信息。 例如,调用图4-21所示的通用文件对话框的关键代码如下: CString strFilter = Dat Files (*.dat)|*.dat|All Files (*.*)|*.*|;C (true, NULL, NULL, OFN_HIDEREADONLY |OFN_OVERWRITEPROMPT, (LPCSTR)strFilter, this);if () != IDOK)return;CString str = ();/打开文件str返 回VC对话框和常用控件
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号