欢迎来到天天文库
浏览记录
ID:43739644
大小:842.00 KB
页数:105页
时间:2019-10-13
《第7章 对话框和控件》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第7章对话框和控件版权所有复制必究对话框是Windows应用程序中一种常用的资源,其主要功能是输出信息和接收用户的输入数据。控件是嵌入在对话框中或其它父窗口中的一个特殊的小窗口,它用于完成不同的输入、输出功能。对话框与控件关系密切,在每个对话框上一般都有一些控件,对话框依靠这些控件与用户进行信息的交互。本章主要介绍对话框的工作原理和编程方法,并通过实例学习一些标准控件和公共控件的使用方法。7.1对话框概述就用户交互输入功能而言,菜单和工具栏的功能是极其有限的。而对话框除了用来显示提示信息(如程序启动时显示版权和
2、运行进度信息),一个主要功能是用于接收用户的输入数据。在MFC中,对话框的功能被封装在CDialog类中,而CDialog类是CWnd类的派生类。作为窗口,对话框和其它窗口一样具有窗口的一切功能。对话框的一个典型应用是通过菜单命令或工具栏按钮打开一个对话框,当然,对话框也可以作为一个程序的主界面。7.1.1基于对话框的应用程序可以直接利用MFCAppWizard向导创建一个基于对话框的应用程序,这种程序运行后首先出现一个对话框。在向导的第一步选择DialogBased项。此时,应用程序向导将出现与单文档和多文档
3、程序向导不同的操作步骤,因为对话框应用程序一般不包含文档,故不支持数据库和复合文档。按照对话框应用程序向导提示的步骤进行操作就得到一个对话框应用程序项目,出现对话框编辑器和控件工具栏浮动窗口,它们采用的是一种所见即所得的可视化工作方式。利用向导创建应用程序的框架后,程序员可根据程序具体功能要求添加代码。例编写一个对话框应用程序MyDialog,程序运行后显示一个对话框,并在对话框上显示文本串。1.执行File
4、New命令出现New对话框,选择MFCAppWizard[exe]项,输入程序名MyDialog,单击
5、OK按钮。在随后出现的MFCAppWizard-Step1对话框窗口中选择DialogBased选项,单击Finish按钮就创建了应用程序项目,并在DeveloperStudio中打开了对话框编辑器和控件工具栏。2.去掉对话框中标题为“TODO:在这里设置对话控制”的静态文本控件,调整对话框大小,在成员函数CMyDialogDlg::OnPaint()中添加代码。voidCMyDialogDlg::OnPaint(){......else{CPaintDCdc(this);dc.SetBkMode(TRANSP
6、ARENT);dc.TextOut(20,50,"这是一个对话框应用程序!");CDialog::OnPaint();}}7.1.2对话框类CDialogMFC提供了一系列对话框类,并实现了对话框消息响应和处理机制。CDialog类是对话框类中最重要的类,我们在程序中创建的对话框类一般都是CDialog类的派生类。CDialog类还是其它所有对话框类的基类,其派生关系如下所示:CObjectCCmdTargetCWndCDialog对话框类为程序员提供了管理对话框的编程接口。CDialog类从CWnd类派生而来
7、,所以它继承了CWnd类的成员函数,具有CWnd类的基本功能,可以编写代码移动、显示或隐藏对话框,并能根据对话框的特点增加新的成员函数,扩展它的功能。在你的CDialog类的派生类中可以直接调用CDialog类的成员函数。大部分的成员函数是虚函数,可以在你的派生类中重载,以实现特定的目的。除了CDialog类成员函数,类CWnd和CWinApp也提供了一些成员函数用于对话框的管理。有关对话框的常用处理函数CDialog::CDialog()通过调用派生类构造函数,根据对话框资源模板定义一个对话框。CDialog
8、::DoModal()激活模态对话框,显示对话框窗口。CDialog::Create()根据对话框资源模板创建非模态对话框窗口。如果对话框不是Visible属性,还需通过调用CWnd::ShowWindow()函数显示非模态对话框窗口。CDialog::OnOk()单击OK按钮时调用该函数,接收对话框输入数据,关闭对话框。CDialog::OnCancel()单击Cancel按钮或按Esc键时调用该函数,不接收对话框输入数据,关闭对话框。CDialog::OnInitDialog()WM_INITDIALOG消
9、息处理函数,在调用DoModal或Create函数时系统发送WM_INITDIALOG消息,在显示对话框前调用该函数进行初始化。CDialog::EndDialog()用于关闭模态对话框窗口。CWnd::ShowWindow()显示或隐藏对话框窗口CWnd::DestroyWindow()关闭并销毁非模态对话框CWnd::UpdateData()通过调用DoDataExchange()
此文档下载收益归作者所有