Visual C++面向对象编程教程 第9章 对话框高级编程.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:34 大小:301KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

Visual C++面向对象编程教程 第9章 对话框高级编程.ppt

VisualC++面向对象编程教程第9章对话框高级编程.ppt

预览

免费试读已结束,剩余 24 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第9章对话框高级编程模态对话框在关闭之前,不允许用户切换到程序的其它窗口。因为当弹出模态对话框时,它就获得了程序的控制权,并且,模态对话框拥有自己的消息循环,因此其窗口中所有产生的消息都不会送到主窗口的消息循环。非模态对话框弹出后,用户不需要关闭它就可以在非模态对话框和应用程序其它窗口之间进行切换。常用的Find查找和Replace替换对话框就是非模态对话框。如果关闭非模态对话框的父窗口,非模态对话框一般也自动关闭。对于非模态对话框,使用对话框编辑器创建对话框资源和使用ClassWizard类向导添加对话框类、成员变量和消息处理函数的方法与模态对话框一样,但创建和退出对话框的方式有所不同。创建模态对话框时是由系统自动分配内存空间,因此在退出对话框时,系统自动调用CDialog::EndDialog()函数来删除对话框。而创建非模态对话框则需要用户来分配内存,退出时还需用户自己删除非模态对话框。非模态对话框的实例应声明为全局对象,不能象模态对话框那样作为局部对象。一般用new操作符生成,使用结束时用delete操作符将其删除。区别于模态对话框,非模态对话框用new生成对象后,不是调用CDialog::DoModal()函数,而是调用CDialog::Create()函数装入对话框资源,并创建和显示对话框。Create()函数在显示非模态对话框后就立即返回,而DoModal()函数是在模态对话框被关闭之后才返回。并且,由于Create()函数不会启动新的消息循环,非模态对话框与应用程序共用一个消息循环,这样,非模态对话框就不会垄断用户的输入。Windows将一些常用的对话框集成到操作系统中,作为Windows通用对话框库Commdlg.dll的一部分。用户在程序中可以直接使用这些通用对话框,不必再创建对话框资源和对话框类,减少了大量的编程工作。并且,用户还可以定制通用对话框的外观和性能。为了在MFC应用程序中使用通用对话框,MFC提供了封装这些通用对话框的类。这些通用对话框类都是从CCommonDialog类派生而来,而CCommonDialog类又是CDialog类的派生类。通用对话框9.3公共控件9.3.1旋转按钮关联控件的设置:旋转按钮的属性和操作:例编写一个单文档应用程序ExmpComctl,执行“测试控件|公共控件”菜单命令打开一个对话框,对话框有一个带旋转按钮的编辑框,用于输入圆周线的宽度。单击旋转按钮,在编辑框显示旋转按钮所表示的线宽。单击OK按钮,程序根据线宽在用户视图区画一个圆。9.3.2滑块滑块控件发送的消息和操作:例完善例7-10a中的应用程序ExmpComctl,向对话框资源添加一个滑块控件,用于设置圆的半径。在对话框中单击OK按钮,程序根据设置的线宽和半径在用户视图区画一个圆。9.3.3进度条进度条控件的操作:例编写一个单文档应用程序PrgresAnmt,执行“测试控件|进度条和动画”菜单命令时在用户视图区播放一段动画,并用进度条提示动画播放的进程。9.3.4标签控件和属性表标签控件的属性和消息:封装标签控件的MFC类:例编写一个单文档应用程序ExmpTabCtl,执行“测试控件|标签控件”菜单命令打开一个标签对话框,对话框有2个标签页面,在每个页面分别显示“组合框”和“公共控件”对话框,并完成与前面例题要求相同的程序功能。2.属性表(Propertysheet)属性表(Propertysheet)又称属性对话框,其形式和功能都类似于前面介绍的标签对话框。一个属性表由一个CPropertySheet类对象和多个CPropertyPage类对象构成,CPropertySheet类或其派生类对象代表一个属性表,CPropertyPage派生类对象代表每个不同的属性页。虽然CPropertySheet派生于CWnd,但属性表的使用方法与CDialog类似,即先调用构造函数创建属性表,然后调用CPropertySheet::AddPage()函数将属性页加入属性表中,最后调用CPropertySheet::DoModal()创建一个模态属性表,或调用CPropertySheet::Create()函数创建非模态属性表。一个属性页对应一个对话框,用于进行数据的输入和输出。CPropertyPage类派生于CDialog类,因此,每个属性页实际上就是一个对话框。我们可以利用对话框编辑器为每个属性页添加控件,并可利用ClassWizard创建自己的派生类,添加与控件关联的成员变量和消息处理函数。9.3.5图像列表封装图像列表的MFC类:例编写一个单文档应用程序,利用图像列表在视图区显示一系列位图。9.3.6列表视控件列表视控件的属性:列表视控件的操作:例编写对话框应用程序MyList,对话框中有一个列