对话框创建和使用.ppt

上传人:本田雅阁 文档编号:2094754 上传时间:2019-02-13 格式:PPT 页数:20 大小:273.01KB
返回 下载 相关 举报
对话框创建和使用.ppt_第1页
第1页 / 共20页
对话框创建和使用.ppt_第2页
第2页 / 共20页
对话框创建和使用.ppt_第3页
第3页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《对话框创建和使用.ppt》由会员分享,可在线阅读,更多相关《对话框创建和使用.ppt(20页珍藏版)》请在三一文库上搜索。

1、对话框创建和使用,概念和分类 创建和调用 通用对话框,概念和分类,概念 最重要界面元素之一,是与用户交互的重要手段。对话框可用于捕捉用户的输入信息或数据,进行数据更新,计算和显示。 实例: 计算器,音乐播放器,. 分类 两种类型: 模式, 无模式 模式对话框 在退出对话框之前,对话框所在应用程序的其它操作不能继续执行。常见大多数对话框都是模式对话框。 无模式对话框 指当对话框被弹出后,一直保留在屏幕上,用户可继续在对话框所在的应用程序中进行其它操作; 当需要使用对话框时,只需象激活一般窗口一样单击对话框所在的区域即可激活。,创建和调用,创建对话框 * 创建和编辑对话框; * 创建和编辑对话框类

2、; * 调用对话框; 建立和使用对话框步骤 1.创建对话框和控件,编辑它们的属性 2.创建对话框类 CFirstDlg 在对话框资源模板的空白区域(没有其他元素或控件)内双击鼠标,将弹出对话框,询问是否为对话框资源创建一个新类。 单击OK按钮,将弹出New Class对话框。在Name框中输入类名CFirstDlg。 Base class和DialogID内容是由系统自动设置的,一般无需修改。即创建的对话框类默认是从基类CDialog派生而来的。 单击OK按钮;,创建和调用,3.调用对话框 建立新的菜单项,在视类菜单项消息响应函数中,添加调用代码 有模式方法 CFirstDlg dlg; /

3、定义对话框类对象 dlg.DoModal(); / 显示对话框 无模式方法 Cxx *dlg=new Cxx(); dlg-Create(IDD_DIALOG1); dlg-ShowWindow(SW_NORMAL); 无论哪种方式,都需在实现文件前部添加相应对话框定义文件,即: #include “FirstDlg.h“ 注意:观察上述对话框退出之前,用户对该应用程序能否执行其它操作? 在应用程序菜单上,多次选择菜单项,将会在同一个位置中出现多个对话框。,创建和使用对话框步骤 1.创建对话框和控件,编辑它们的属性; 2.生成对话框类,并可添加其成员变量和编辑成员函数; 3.调用对话框 调用对

4、话框两个步骤: 1)添加包含头文件语句 在相应类的实现文件中,添加包含对话框类定义的头文件语句 如,创建和调用,创建和调用,include “PWDialog.h“ 2)在程序中调用对话框 可采用模式和无模式两种方法。 如,模式方法: CMyFirstDlg dlg; dlg.DoModal(); 或 CMyFirstDlg dlg; if(dlg.DoModal()=IDOK) ,创建和调用,应用例示 模式对话框应用广泛,如密码加锁页面。 1.新建并编辑对话框,添加编辑框控件。 将编辑控件的style属性设置为Password; 对话框标题设置为密码验证 利用编排-TAB ORDER菜单项,

5、将EDIT控件的序号设定为一(输入焦点) 2.新建对话框类C PWDialog,并添加编辑框控件对应的成员变量m_strPasswd,种类为value,类型为string, 3.在CXXApp类的实现文件中,添加# include “PWDialog.h“, 4.在程序中调用对话框,添加代码:,创建和调用,BOOL CQ3App:InitInstance() CPDlg dlg; if(dlg.DoModal()=IDOK) if(dlg.m_strPasswd!= “abc“) MessageBox(NULL,“The PassWord is invalid!“,“aa“,MB_YESNO)

6、; return false; else ./原代码 ,创建和调用,4.编译运行 例 创建并使用无模式对话框 步骤: (1) 创建单文档应用程序中,在该项目中添加一个对话框资源,将其标识符设为IDD_DIALOG_SECOND, 标题设为“无模式对话框”,对话框字体和大小设为“宋体,9号”。 (2) 为IDD_DIALOG_SECOND对话框资源创建一个对话框类CSecondDlg。 (3) 打开MFC ClassWizard,从“Class name”列表中选择CSecondDlg,在IDs列表中选择IDOK, 它是对话框中OK按钮的标识符,然后在Messages框中选择BN_CLICKED

7、(单击按钮)消息, 单击Add Function按钮或双击BN_CLICKED消息,出现“Add Member Function”对话框以输入成员函数的名称, 保留系统默认的函数名为OnOK。,创建和调用,(4) 修改CSecondDlg:OnOK函数中的代码。 void CSecondDlg:OnOK() DestroyWindow(); / 终止对话框显示 delete this; /删除对话框,释放内存空间 代码中,DestroyWindow是对话框基类CWnd的一个成员函数, 用来终止窗口。,创建和调用,(5) 将项目工作区切换到ClassView(类视图)页面,展开CMainFram

8、e类的所有成员,双击OnTestDlg就会在文档窗口中自动定位到该函数的实现代码处,将其修改成下列代码: void CMainFrame:OnTestDlg() CSecondDlg *pDlg = new CSecondDlg; pDlg-Create( IDD_DIALOG_SECOND );/ 创建对话框 pDlg-ShowWindow( SW_NORMAL );/ 显示对话框 代码中,Create函数可以用来以一个对话框资源来创建对话 框,ShowWindow是CWnd一个成员函数,用来显示对话框, SW_NORMAL用来指定将窗口显示成一般常用的状态。,创建和调用,(6) 在文件Ma

9、inFrm.cpp的前面添加CSecondDlg类的包含语句,即: #include “FirstDlg.h“ #include “SecondDlg.h“ (7) 编译并运行。 观察在应用程序菜单上,多次选择“测试”“对话框”菜单项,是否能出现多个对话框。,创建和调用,练习 用模式或无模式对话框实现 一个简单计算器对话框程序 为计算器对话框中按钮IDC_COMPUTE增加了消息响应函数。其成员函数参考代码: void CDLGDialog:OnCompute() UpdateData(TRUE); switch(m_nOpr) case 0: m_d3=m_d1+m_d2; break; c

10、ase 1: m_d3=m_d1-m_d2; break; case 2: m_d3=m_d1*m_d2; break;,创建和调用,case 3: if(m_d2!=0.0) m_d3=m_d1/m_d2; else AfxMessageBox(“除数为零!“); m_d3=0.0L; break; default: TRACE(“default m_nOpr=%dn“,m_nOpr); UpdateData(FALSE); 注释: UpdateData函数使用方法: UpdateData(TRUE) - 将编辑框中的数据读取到成员变量; UpdateDate(FALSE) - 将成员变量的

11、数值传递到编辑中框显示,通用对话框,Windows提供了一组标准用户界面对话框,它们都有相应的MFC库中的类来支持。 所有这些通用对话框类都是从一个公共的基类CCommonDialog派生而来。通过相应函数,调用对话框。 通用对话框: * 消息对话框; * 文档对话框; * 字体对话框; ,通用对话框,消息对话框 最简单的一类对话框,它只是用来显示信息的。在MFC类库中就提供相应的函数,可直接在程序中调用。 在使用消息对话框时,图标类型和按钮类型的标识可使用“|”来组合,例如 MessageBox(“继续进行该操作吗?”,“提示 “,MB_YESNOCANCEL|MB_ICONWARNING)

12、; 两个函数原型如下: int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 ); int MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL, UINT nType = MB_OK );,通用对话框,这两个函数都是用来创建和显示消息对话框的; AfxMessageBox是全程函数,可以用在任何地方。而这里的MessageBox只能在对话框、窗口和控件等一些窗口类中使用。 它们都是MFC函数,但与前面使用的MessageBox不同(前面使用

13、的MessageBox,是包含4个参数的API函数) int nChoice = MessageBox(“你喜欢Visual C+吗?“,“提问“, MB_OKCANCEL|MB_ICONQUESTION); if (nChoice = IDYES) /. ,通用对话框,文件对话框 文件对话框类CFileDialog CFileDialog构造函数的原型: CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTSTR lpszFileName = NULL, DWORD dwFlags = OFN_HIDEREADO

14、NLY |OFN_OVERWRITEPROMPT, LPCTSTR lpszFilter = NULL, CWnd* pParentWnd = NULL ); CFileDialog构造函数参数说明: bOpenFileDialog 当bOpenFileDialog为TRUE时表示文件打开对话框,为FALSE时表示文件保存对话框。 lpszDefExt 用来指定文件扩展名。若用户在文件名编辑框中没有键入扩展名,则系统在文件名后自动添加lpszDefExt指定的扩展名。,通用对话框,lpszFileName 用来在文件名编辑框中指定开始出现的文件名,若为NULL时,则不出现。 dwFlags 用

15、来指定对话框的界面标志 当为OFN_HIDEREADONLY时表示隐藏对话框中的“只读”复选框, 当为OFN_OVER- WRITEPROMPT时表示文件保存时,若有指定的文件有重名,则出现提示对话框。 pParentWnd 用来指定对话框的父窗口指针。 lpszFilter 参数用来确定出现在文件列表框中的文件类型。 它由一对或多对字符串组成,每对字符串中第一个字符串表示过滤器名称, 第二个字符串表示文件扩展名,若指定多个扩展名则用“;”分隔,字符串最后用两个“|”结尾。 注意:字符串应好写在一行,若一行写不下则用“”连接。,通用对话框,例. 创建一个“打开”菜单项或按钮,当用户点击它时,会弹出一个文件对话框,并将用户选择的文件名显示出来。 建立一个菜单消息响应函数,添加代码: CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, NULL, NULL); if( dlg.DoModal() = IDOK ) CDC *pDC=GetDC(); pDC-TextOut(0,0,(LPCTSTR)dlg.GetFileName(); 任务 制作一个能进行常用算术运算的计算器,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1