第2章 对话框应用程序课件.ppt

上传人:牧羊曲112 文档编号:1525210 上传时间:2022-12-03 格式:PPT 页数:93 大小:4.67MB
返回 下载 相关 举报
第2章 对话框应用程序课件.ppt_第1页
第1页 / 共93页
第2章 对话框应用程序课件.ppt_第2页
第2页 / 共93页
第2章 对话框应用程序课件.ppt_第3页
第3页 / 共93页
第2章 对话框应用程序课件.ppt_第4页
第4页 / 共93页
第2章 对话框应用程序课件.ppt_第5页
第5页 / 共93页
点击查看更多>>
资源描述

《第2章 对话框应用程序课件.ppt》由会员分享,可在线阅读,更多相关《第2章 对话框应用程序课件.ppt(93页珍藏版)》请在三一办公上搜索。

1、第二章 对话框应用程序,几种基本对话框的原理和实现方法,以及实用对话框程序的设计技巧,对话框的两种形式,示例1、模态对话框2、非模态对话框,创建模态对话框后,应用程序只会响应该对话框的消息,直到收到结束模态对话框消息后,才会把控制权交还给应用程序,转而执行其它的消息。,创建非模态对话框后,应用程序不会垄断用户的输入,仍然可以响应其它窗口的消息。,2.1 模态对话框,1、windows是基于消息驱动机制的;2、模态对话框产生后会屏蔽其它窗体消息;3、应用程序只会响应当前模态对话框的消息,直至被关闭;4、大多数窗口都属于该类型。示例,(1)新建项目,(2)创建基于对话框的应用程序,(3)通过资源视

2、图打开主界面编辑,(4)添加按钮,ID号为:IDC_CREATE_DIALOG,(5)添加新对话框,ID号为:IDD_MODAL_DIALOG,(6)为新对话框添加类,(7)新类名:CMyModalDialog,(8)回到主界面,添加按钮的消息响应,(9)消息类型、类列表,(10)添加代码,(11)编译结果,(12)解决方案:添加头文件包含,(13) 再次编译:正确,(14)执行结果:点击按钮,出现新对话框(为模态对话框),(15)结果及分析,左对话框无法接受用户输入,直到关闭右边模态对话框原因:CMyModalDialog dlg;dlg.DoModal();,/创建模态对话框,本节小结,模

3、态对话框的特性创建一个简单模态对话框的步骤,2.2 非模态对话框,非模态对话框窗口打开时,可以接受其它窗口消息此类对话框较少示例,1、创建一个基于对话框的应用程序,并在主界面上添加一个按钮,2、添加一个新对话框,并添加新类:CMyNoModalDialog,3、为主界面上的按钮添加消息响应,4、执行结果:焦点可回到父窗口,从而创建多个非模态对话框,5、结果及分析,焦点没有停留在子窗口上,说明创建了一个非模态对话框窗口代码分析/定义对话框对象指针CMyNoModalDialog* pDlg=new CMyNoModalDialog();/创建非模态对话框pDlg-Create(IDD_DIALO

4、G1,this);/显示对话框pDlg-ShowWindow(SW_SHOW);,CDialog类的成员函数:Create;原型BOOl Create(LPCTSTR lpszTemplateName,CWnd* pParentWnd=NULL);BOOL Create(UINT nIDTemplate,CWnd* pParentWnd=NULL);,/指定对话框模板的名称,/也可以是对话框的ID号,/第二个 参数指定了对话框的父窗口,此后,还要调用ShowWindow来显示对话框,5、结果及分析(续),/定义对话框对象指针CMyNoModalDialog* pDlg=new CMyNoMod

5、alDialog();/创建非模态对话框pDlg-Create(IDD_DIALOG1,this);/显示对话框pDlg-ShowWindow(SW_SHOW);,定义为指针:在堆上分配内存,与整个程序的生命周期是一致的,在程序结束时才会被释放;或者定义一个类的全局变量来控制无模式对话框的打开; 若定义为局部变量,则无法创建。示例,5、结果及分析(续),5、结果及分析(续),修改后的代码CMyNoModalDialog dlg;dlg.Create(IDD_DIALOG1,this);dlg.ShowWindow(SW_SHOW);,5、结果及分析(续)修改后的结果,5、结果及分析(续)修改后

6、的结果,结果:点击按钮创建非模态对话框窗口后闪烁一下后就立即关闭了,本节小结,非模态对话框的特性创建一个非模态对话框的步骤及注意事项,2.3 属性对话框,属性对话框是一种比较特殊的对话框模式,它可以把多个独立的对话框有效合理地组织起来示例,实例效果图及实现步骤,1、创建一个基于对话框的项目,2、解决方案资源管理器-添加-资源,3、添加资源 对话框,4、属性页资源(大、中、小),/出现在对话框中,因此属性页是对话框的一种形式,可当做对话框来处理。,5、添加三个属性页资源,6、添加基于CPropertyPage类的新类,7、添加基于CPropertySheet类的CMySheet类,7、添加基于C

7、PropertySheet类的CMySheet类(续),7、添加基于CPropertySheet类的CMySheet类(续),8、在CMySheet中定义3个属性页,/MySheet.h文件中添加,9、在CMySheet构造函数中添加3个属性页,/在MySheet.cpp文件中,构造函数是与类同名的函数,10、显示属性对话框,/在应用程序实现文件的InitInstance()函数中添加,11、运行效果,本节小结,属性对话框的创建注意事项:添加资源的方法设置资源ID的方法为资源添加类的方法添加新类的方法在头文件中定义变量和在实现文件的构造函数中初始化变量的方法,2.4 对话框设计技巧,1、网格和

8、参考线2、对齐和排列3、设置控件逻辑顺序,1、网格设置(默认情况下无网格),1、网格设置(续),1、网格设置(续),1、网格设置(续:设置后的结果),2、对齐和排列(ctrl键选中),2、对齐和排列(续),3、设置控件逻辑顺序,控件的逻辑顺序决定着软件中需要使用TAB键进行焦点切换时的顺序排列。例如,3、设置控件逻辑顺序(续),3、设置控件逻辑顺序(续),/按照添加的顺序,3、设置控件逻辑顺序(续):改变顺序的方法,/原始顺序,/鼠标在某个需要改变顺序的控件上单击,即可。此图为改变后的顺序,本节小结,1、参考线和网格的设置2、控件对齐和排列3、设置控件逻辑顺序,2.5 通用对话框,通用对话框是

9、系统提供的一组比较常见的对话框模板,例如“打开”、“另存为”等;编写代码实现通用对话框示例,1、创建一个基于对话框的应用程序,添加控件如图所示,1、(续),为第一个编辑框定义变量CString szSigOpenPath为第二个编辑框定义变量CString szSigSavePath为列表框定义变量CListBox PathList,2、打开对话框“单选”对应代码,/ 定义“打开”对话框CFileDialog dlg ( TRUE ) ;if ( dlg.DoModal() = IDOK )/ 取得文件路径全名/ szSigOpenPath是CString类型,跟第一个编辑框相关联 this-

10、szSigOpenPath = dlg.GetPathName() ;/ 更新界面显示this-UpdateData( FALSE ) ;,3、另存为代码,/ 定义“另存为”对话框CFileDialog dlg ( FALSE ) ;if ( dlg.DoModal() = IDOK )/ 取得文件路径全名/ szSigSavePath是CString型,与第二个编辑框关联this-szSigSavePath = dlg.GetPathName() ;/ 更新界面显示this-UpdateData( FALSE ) ;,4、过滤器+多选代码,/ 设置过滤器,只能选择*.exe或者*.txt类型

11、的文件static WCHAR szFilter = L可执行文件(*.exe)|*.exe|文本文件(*.txt)|*.txt| ;/ 设置OFN_ALLOWMULTISELECT标记,支持多选CFileDialog dlg ( TRUE, NULL, NULL, OFN_ALLOWMULTISELECT, szFilter ) ;if ( dlg.DoModal() = IDOK )/ 清空列表框this-PathList.ResetContent() ;/ 取得所选择的第一个文件定位信息。POSITION pos = dlg.GetStartPosition() ;while ( pos

12、 )/ 取得路径全名并添加到列表框this-PathList.AddString ( dlg.GetNextPathName(pos) ) ;,5、运行效果图,2.5.2 通用“字体”对话框,通过“字体”对话框可用来设置字体的大小、粗细、正斜、颜色、类型等例如编写代码设计自己的“字体”对话框,1、创建一个基于对话框的应用程序,添加两个控件:(1)组框,标题为“预览”(2)按钮,“设置”,2、在对应的dlg.h文件中添加如下两个变量,/保存设置的字体颜色和字体属性,3、添加“设置”按钮的响应,3、(续)消息类型、类列表,4、添加代码(p23),5、在OnPaint函数中定义重绘代码,/在dlg.

13、cpp文件中找到OnPaint函数,在对应的位置添加代码,6、运行效果(1),6、运行效果(2),6、运行效果(3),2.5.3 通用“颜色”对话框,可提供简单的调色面板,供用户选择在很多应用程序中都可见编写代码实现之,1、创建对话框应用程序,并添加控件,2、定义成员变量,2、定义成员变量(续),2、(续)同样的方法设置第二个编辑框的成员变量,2、(续)同样的方法设置第三个编辑框的成员变量,3、直接在dlg.h文件中定义变量,/定义绘制指定颜色的区域,4、“设置”按钮的消息响应,5、OnPaint函数中定义重绘代码,6、 OnInitDialog函数中添加额外代码,BOOL Cex253Dlg

14、:OnInitDialog()/ TODO: 在此添加额外的初始化代码this-r = this-g = this-b = 255 ;this-UpdateData ( FALSE ) ;this-ColorShowRect.left = 147 ;this-ColorShowRect.top = 30 ;this-ColorShowRect.right = 245 ;this-ColorShowRect.bottom = 114 ;return TRUE;,7、对每个编辑框添加事件,void Cex253Dlg:OnEnChangeEdit1()this-UpdateData () ;this-Invalidate () ;void Cex253Dlg:OnEnChangeEdit2()void Cex253Dlg:OnEnChangeEdit3(),8、运行初始界面,9、点击“设置”后出现颜色对话框,10、设置后的结果,本节小结,1、关联控件和变量2、MFC定义的常见类的使用,本章总结,1、两种基本对话框的类型、原理、实现方法2、属性对话框的实现3、对话框设计技巧4、通用对话框的设计课外练习:编程理解模态、非模态对话框的区别;编程实现属性对话框和通用对话框,注意使用对话框的设计技巧。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号