您好,欢迎访问三七文档
返回1第五章对话框及常用控件返回2本章目标5.1对话框的组成和分类5.2创建模式对话框5.3非模式对话框的实现返回3第五章对话框及常用控件在Windows应用程序中,对话框(Dialog)是最重要的用户界面元素之一,是应用程序与用户交互的重要手段。当用户进行某项操作之后,弹出一个对话框把反馈信息传递给用户,也可以要求用户输入数据或者进行选择。控件在Windows应用程序中也很常见。一般来说,在对话框中是通过各种控件来和用户进行交互的,我们经常用到的控件有按钮、列表框、编辑框、组合框、滚动条等。实际上,控件是一种特殊类型的窗口,通常为其父窗口所拥有。返回45.1对话框的组成和分类5.1.1对话框的组成在VisualC++中,对话框主要是由对话框资源和对话框类组成:1.对话框资源对话框资源中描述的是对话框的大小、风格等特性,以及对话框中控件的类型和它们的位置。定义对话框资源最简单、最有效的方法就是使用VisualC++中的资源编辑器。2.对话框类对话框资源所提供的仅仅是一个数据结构,要利用所创建的对话框资源,必须要创建以它作为资源的对话框类,对话框类是从CDialog类中派生出的子类,它提供了编程接口来管理对话框。返回55.1对话框的组成和分类5.1.2对话框的分类对话框有两种类型:模式对话框和无模式对话框。下面分别对这两种对话框进行说明。1.模式对话框所谓“模式对话框”是指对话框被弹出后,用户必须在对话框中作出相应的操作;在退出对话框之前,会阻止其他应用程序的运行(包括它所在的应用程序)。一般情况下,模式对话框会有【OK】(确定)和【Cancel】(取消)两个按钮。单击【OK】按钮,系统认定用户在对话框中的选择或输入有效,退出对话框;单击【Cancel】按钮,系统认定用户在对话框中的选择或输入无效,退出对话框,程序恢复原有状态。返回65.1对话框的组成和分类2.无模式对话框所谓“无模式对话框”是指当对话框被弹出后,将一直保留在屏幕上,但不影响其他应用程序的运行,用户可以继续在对话框所在的应用程序中进行其他操作;当需要使用对话框时,只需像激活一般窗口一样单击对话框所在的区域即可。例如在MicrosoftWord中的“查找”和“替换”对话框。两种对话框在用资源编辑器设计和使用ClassWizard进行编程时的方法基本一致。但在创建和退出窗口时的方式有所不同。返回75.1对话框的组成和分类1.在创建时,模式对话框是由系统自动分配内存空间,因此在退出对话框时,对话框对象会自动删除。而无模式对话框则是需要用户来指定内存,退出时还需用户自己来删除对话框对象。2.在退出时,两种对话框所使用的终止函数不一样。模式对话框通过调用CDialog::EndDialog来终止,而无模式对话框则是通过调用CWnd::DestroyWindow来终止。返回85.2创建模式对话框5.2.1创建应用程序框架在进行创建对话框之前,我们首先按照第四章介绍的方法创建一个应用程序框架,并且在VisualC++6.0中将“工程”打开。步骤一:在VisualC++6.0中选择【File】菜单的【New】菜单命令,弹出【new】对话框。在工程列表中选中选项【MFCAppWizard[exe]】,在【Projectname】栏中输入工程名称为【Dialog】,在【Location】栏中指定工程的存储路径为E:\C++\EXAMPLE\。单击【OK】按钮启动AppWizard。步骤二:在接下来的AppWizard的各个步骤中按下列要求设置选项:返回95.2创建模式对话框Step1:选择单文档界面(SingleDocument),其他接受系统缺省设置,单击【Next】按钮,进入下一步。Step2:接受系统缺省设置,单击【Next】按钮Step3:关闭【ActiveXControls】复选框选项,单击Next】按钮,进入下一步。Step4:关闭【Dockingtoolbar】、【Initialstatusbar】、【Printingandprintpreview】,以及【3DControl】复选框选项,单击【Next】按钮,进入下一步。Step5:接受系统缺省设置,单击【Next】按钮。Step6:接受系统缺省设置,单击【Finish】按钮。最后:弹出工程信息对话框,单击【OK】按钮,完成应用程序框架的设计。返回105.2创建模式对话框5.2.2创建对话框资源接下来,我们要做的工作是创建对话框资源,其创建步骤如下:步骤一:在打开的工程中,选择【Insert】菜单中的【Resource】菜单项,或直接按Ctrl+R键,系统将弹出【InsertResource】对话框步骤二:在对话框中选择【Dialog】选项,然后单击【New】按钮,或直接双击【Dialog】选项,这时对话框资源编辑器将显示在VisualC++平台中,在对话框资源编辑器中显示了一个只有【OK】按钮和【Cancel】按钮的简单的对话框。返回115.2创建模式对话框在新建对话框的同时,在其右边随之出现了一个控件模板,即Controls工具栏,它的作用是向对话框资源中添加控件。工具栏中的每一个图标(除了左上角的指针)都代表一种能够添加到对话框中的控件,我们可以用一种“所见即所得”的方式来向对话框资源添加各种控件。如果仔细观察一下系统的菜单,你就会发现菜单中多了一项【Layout】菜单,而且在状态拦的上面增加了一个新的工具栏——【Dialog】工具栏,其中的按钮在编辑对话框资源和增加控件时是十分有用的工具。下面我们对【Dialog】工具栏进行详细的说明。返回125.2创建模式对话框1.Test:单独运行对话框来测试对话框的外观和行为;2.AlignLeft:将选定的多个控件按照左对齐的格式放置;3.lignRight:将选定的多个控件按照右对齐的格式放置4.AlignTop:将选定的多个控件按照上对齐的格式放置5.AlignBotton:将选定的多个控件按照下对齐格式放置6.CentralVertical:将选定的一个或多个控件按照中心垂直对齐格式放置7.CentralHorizontal:将选定的一个或多个控件按照中心水平对齐格式放置8.SpaceAcross:将选定的多个控件两两之间的水平间隔相同返回135.2创建模式对话框9.SpaceDown:将选定的多个控件两两之间的垂直间隔相同10.MakeSameWidth:使选定的多个控件具有相同的宽度,宽度的标准是最后选择的控件11.MakeSameHeight:使选定的多个控件具有相同的高度,高度的标准是最后选择的控件12.MakeSameSize:使选定的多个控件具有相同的高度和宽度,高度和宽度的标准是最后选择的控件13.ToggleGrid:显示或隐藏网格14.ToggleGuides:显示或隐藏标尺返回145.2创建模式对话框步骤三:系统默认产生的对话框的标题是“Dialog”,下面我们来更改一下对话框的标题。选择【View】菜单下的【Properties】菜单项,或对话框窗体上单击鼠标右键,在弹出的快捷菜单中选【properties】菜单项,系统将弹出对话框资源的属性对话框。选择【General】选项卡,在其中的【Caption】框中输入对话框标题的名称为“个人资料”。资源【ID】框中的默认值为IDD-DIALOG1,可以按照自己的需要修改为便个于记忆的标识符。因为此对话框的内容主要用于显示人资料,所以在此示例中,我们将【ID】改为“IDD_DIALOG_Mydata”。按“回车”键,完成对话框标题和ID的更改。返回155.2创建模式对话框在VisualC++中,对于不同的控件定义了不同的ID类型:IDC_是控件的ID值(IDofControl)的前缀;IDD_是对话框的ID值(IDofDialog)的前缀;ID是系统自己缺省的ID值的前缀。步骤四:向对话框中添加控件。向对话框中添加控件的方法有两种:1.在控件工具栏中选择所需要的控件,按下鼠标的左键(不要松开),将鼠标拖到对话框中松开,在对话框中将添加一个指定的控件。2.在控件工具栏中单击所需要的控件,此时控件将呈凹下状态,将鼠标移至对话框,鼠标此时显示为“十”字形,按下鼠标左键,在对话框上拖动至适当大小,松开鼠标左键,开鼠标左键,在对话框中将添加一个指定的控件。返回165.2创建模式对话框按照上面的方法,我们在对话框资源中添加控件资源,并且按照修改对话框标题的方法对每个控件对ID和Caption进行修改,如表5.1所示控件名称ID值CaptionStaticTextEditBoxGroupBox1RadioButton1RadioButton2GroupBox2ComboBoxGroupBox3IDC_STATICIDC_EDIT_NAMEIDC_STATICIDC_RADIO_MIDC_RADIO_FIDC_STATICIDC_COMBO_SCHOOLIDC_STATIC姓名性别男女最高学历爱好返回175.2创建模式对话框步骤五:下面我们来设置一下Tab键顺序。所谓Tab键顺序是指当对话框拥有输入焦点时,每次按下Tab键,对话框中各个控件依次拥有输入焦点的次序。选择【Layout】菜单中的【TabOrder】菜单项,或直接按下Ctrl+D键,此时对话框中的每一个控件左上角将控件名称ID值CaptionCheckBox1CheckBox2CheckBox3Button1Button2IDC_CHECK_ARTIDC_CHECK_SPORTIDC_CHECK_MCSICIDOKIDCANCEL艺术体育音乐确定取消返回185.2创建模式对话框会出现一个数字标签,这个数字标签就代表了Tab键顺序。下面,我们按以下顺序,用鼠标左键单击每一个控件:1.IDC_EDIT_NAME2.IDC_RADIO_M3.IDC_RADIO_F4.IDC_COMBO_SCHOOL5.IDC_CHECH_ART6.IDC_CHECK_SPORT7.IDC_CHECK_MUSIC8.IDOK9.IDCANCEL返回195.2创建模式对话框按【Esc】键退出设置Tab键顺序状态。并将以上各个控件的属性中的【TabStop】复选框置为选中状态。步骤六:测试生成对话框资源。选择【Dialog】工具栏中的【Test】按钮,或者直接按Ctrl+T键,输入焦点应该首先在文本框IDC_EDIT_NAME上,不断按Tab键,观察输入焦点的变化是否和设置的顺序一致。也可以进行在文本框中输入文本信息、选中单选按钮、选择组合框信息、选中复选框等操作。5.2.3创建对话框类5.2.3.1创建对话框类并添加成员变量对话框资源已经编辑完成,下面的工作是通过ClassWizard来创建自己的对话框类。返回205.2创建模式对话框步骤一:在对话框编辑器打开并且显示刚才新创建的对话框资源的情况下,选择【View】菜单中的【ClassWizard】菜单项。ClassWizard会提示将对话框资源和一个类相连接,这个类可以是新创建的类,也可以是已经存在的类。步骤二:接受缺省设置【Creatannewclass】,单击【OK】按钮,为对话框资源创建一个新类。系统将会弹出【NewClass】对话框。在【Name】编辑框中输入需要生成的对话框类名“CMydataDialog”,在指定对话框类名的同时,ClassWizard将按照给出的对话框类名来自动定义生成的对话框的文件名为“MydataDialog.cpp”。单击【OK】按钮,将继续执行。返回215.2创建模式对话框步骤三:系统将返回【MFCClassWizard】对话框。选择【MemberVariables】选项卡来查看此对话框的成员变量表,可以通过此表将对话框中的不同的控件与相应的成员变量联系起来。在【ControlIDs】列表框中,选中【IDC_CHECK_ART】,用鼠标单击【AddVariable】按钮,系统将弹出一个用于添加成员变量的对话框【AddMemberVariable】。在【Membervari
本文标题:对话框及常用控件
链接地址:https://www.777doc.com/doc-2467213 .html