当前位置:
文档之家› 《Visual_C++程序设计教程》对话框设计和Windows常用控件
《Visual_C++程序设计教程》对话框设计和Windows常用控件
4.2.3 了解对话框常用函数
CDialog类是对话框的基类,用户在程序中创 建的对话框类一般都是CDialog类的派生类。 CDialog类从CWnd类派生而来,所以它继承 了CWnd类的成员函数,用户在编写对话框 程序时除了使用CDialog类的成员函数之外, 还可以调用CWnd类的一些成员函数进行对 话框的管理。对话框常用的成员函数主要有 以下几个:
第4章 对话框设计和Windows常用控件
4.1 对话框应用程序介绍
1.对话框组成 对话框主要由以下两部分组成: (1) 对话框资源:定义了对话框的特性(如大小、位 置和风格等)以及对话框中每个控件的类型、位置等 属性。一般情况下,对话框资源在资源编辑器中静 态地定义,也可以用编程的方法在程序运行时动态 地创建。 (2) 对话框类:对话框类是与对话框资源相关联的, 基于CDialog类的派生类,它提供编程接口来管理对 话框。
4.列表框控件(CListBox) 列表框是一种输入控制,它可以使用户从所列的表 项中进行选择。用户可以在其中选择一个或多个项, 这与单选按钮和复选框的功能有些相近,但不同的 是,列表框中项的数目是灵活变化的,程序运行时 可往列表框中添加或删除某些项。并且,当列表框 中项的数目较多不能一次全部显示时,还可以通过 滚动条来拓展显示范围。
4.OnCancel 该函数在单击对话框中的“Cancel”按钮或按Esc键时由框架调用,其原型 如下: virtual void OnCancel(); 5.OnInitDialog 该重载函数用于响应WM_INTTDIALOG消息,对对话框进行初始化处理, 其原型如下: virtual BOOL OnInitDialog(); 返回值:返回非零值,输入焦点为第一个控件。若程序已显式地设置焦 点到某个控件处,则返回零。 6.OnOK 单击ID为IDOK的按钮时调用的函数,关闭对话框,并返回IDOK,其原型 如下: virtual void OnOK();
1.DoModal 该方法用于创建并显示一个模式对话框,其原型如下: virtual int DoModal(); 返回值:该方法返回一个整数值,该数值可以应用于EndDialog方法。如果返 回值为-1,则表示没有创建对话框;如果为IDABORT,则表示有其他错误发 生。 2.Create 该方法从对话框模板中创建一个对话框资源,其原型如下: BOOL Create(LPCTSTR lpszTemplateName,CWnd*pParentWnd=NULL); BOOL Create(UINT nIDTemplate,CWnd*pParentWnd=NULL); 3.EndDialog 该函数用于退出一个模式对话框,返回nResult作为DoModal的返回值,其原 型如下: void EndDialog(int nResult);
6.滚动条控件 滚动条是窗口中常见的对象,当窗口客户区中要显 示比其自身大的对象时,滚动条便非常有用了。这 种滚动条与窗口一同创建,位于窗口用户区旁的非 用户区,用来扩展用户区的显示范围,它被称为标 准滚动条。另外,还有一种作为控件的滚动条,这 是一个独立的窗口,具有直接的输入焦点,使用这 种滚动条的目的未必是滚动显示窗口内容。
对话框的属性有“常规”、“样式”、“更多样式”、 “扩展样式”和“更多扩展样式”5个部分,这里只介 绍最常用的“常规”属性,其中各个属性说明如表4-2 所示。
根据需要设置各项属性即可。
4.2.2 创建对话框类
在创建了对话框模板后,就可以利用 ClassWizard来创建从CDialog派生且连接到 对话框模板的对话框类了,并可以添加与控 件相关联的成员变量。需要注意的是,无论 在创建对话框类之前还是之后,都可以向对 话框资源添加控件,但只有在创建对话框类 之后,才可以为对话框添加与控件关联的成 员变量和消息处理有以下两种:模式(Model)对话框 和非模式(Modeless)对话框。 对于模式对话框,在对话框关闭之前,用户无法在 同一应用程序的其他地方进行工作,如Microsoft Word中的“打开文件”对话框。而对于非模式对话 框,在它仍然保留在屏幕上的同时,用户可以在同 一应用程序的其他窗口中进行工作,如Microsoft Word 中的“查找与替换”对话框,在对话框保留在 屏幕的同时,还可以进行光标的重定位及其他操作。
4.4 对控件进行排版
在实际编程中,有时会根据需要在对话框中 加入多个控件,这时就需要对控件进行适当 的排版以使对话框更加美观。控件布局可以 利用如图4-11所示的布局菜单,或者利用如 图4-12所示的控件布局工具栏来实现。要注 意的是,布局菜单和布局工具栏只有在对对 话框资源进行编辑时才有效,对其他资源进 行编辑时无效。
4.2.1 建立对话框程序框架
在MFC应用程序中添加对话框资源,通常按 下列步骤进行: (1)利用MFC AppWizard向导生成单文档 (SDI)应用程序DialogTest。选择“插 入”→“资源”命令,或使用Ctrl+R组合键 打开“插入资源”对话框。展开资源列表中 的“Dialog”项,如图4-1所示,“资源类型” 列表中列出了各种类型的对话框资源。
1.静态文本控件(CStatic) 静态文本控件用来在屏幕上显示字符串,一般不响 应消息,在运行过程中不和用户发生任何关系。当 把矩形范围定位好之后,就可以直接输入文本。该 控件的一个常用属性是标题(Caption)属性,用来 设置在控件中显示的文本。在很多情况下,对话框 中的一些说明性质的文字均可以用静态文本进行输 出。管理静态文本控件的MFC类是CStatic类。
5.组合框控件 组合框是列表框和编辑框的组合。在组合框中,用 户除了可以在列表中对已经存在的选项进行选择外, 还可以输入新的选项。 Windows提供了3种类型的组合框:简单组合框 (Simple)、下拉式组合框(Dropdown)和下拉式 列表框(Drop List)。简单组合框和下拉式组合框都 含有列表框和编辑框控件,只不过简单组合框的列 表框不是下拉式的,跟正常的列表框一样。下拉式 列表框则虽然有下拉式的列表,但却没有文字编辑 功能。
4.2 创建对话框程序
在Visual C++ 6.0中创建对话框应用程序一般分为4 个步骤: (1)利用资源编辑器创建一个对话框模板,加入需 要的控件并设置对话框和控件的属性。 (2)利用ClassWizard创建与对话框资源对应的 CDialog的派生类。 (3)编写创建对话框的代码,通常在响应某个菜单 项或者工具栏按钮时弹出对话框。 (4)为对话框的控件添加响应的消息处理。
4.3.2 添加Windows控件
控件的创建方法有两种,一种是在对话 框中指定控件,即将控件的父窗口指定 为对话框,当程序启动该对话框时, Windows系统自动为对话框创建控件, 当关闭对话框时,Windows所创建的控 件也随之被撤销。另一种是将控件看作 是任意窗口的子窗口,通过调用相应的 创建函数来实现。
3.制表站属性 该属性控制利用键盘Tab键获取对话框窗口的 操作焦点,获得焦点的控件能够响应当前的 键盘输入。控件获得焦点后,按Enter键就执 行控件所对应的命令。任何对话框中都只能 由一个控件拥有焦点。
4.组属性 组属性用来对一组控件进行编组,用户可以用键盘 方向键在该组控件内切换焦点。组属性常用于单选 按钮和复选框,在同一组内的单选按钮具有互斥的 特性,即在这些单选按钮中只能有一个是选中的。 如果一个控件具有Group属性,则这个控件以及按 Tab顺序紧随其后的所有控件都属于一组,直到遇 到另一个有Group属性的控件为止。
4.3 使用Windows常用控件
为了与用户进行直观、方便、快捷的交 互,Windows操作系统提供了各种控件。 控件(Control)是一种子窗口,应用程序 用它来与其他窗口进行简单的交互。一 般情况下,在使用对话框的时候都需要 加上对话框控件,如编辑框、组合框、 按钮和单选按钮等。
4.3.1 Windows常用控件介绍
2.标题属性 静态文本、组框、命令按钮以及单选按钮等控 件都可以显示标题,用来对控件进行文字说明。 控件标题中的字符“&”使紧跟其后的字符附带 下划线,按Alt+下划线上的字符将启动该控件。 若控件是一个单选按钮,则按Alt+下划线上的 字符将选择该按钮;若控件是命令按钮,则将 激活按钮命令;若控件是一个静态文本,则将 激活紧随其后的下一个控件。
(2)单击“新建”按钮可以创建一个资源类型列表中指定类 型的新资源;单击“定制”按钮可以创建资源类型列表中 没有的新类型的资源;单击“导入”按钮可以将外部已有 的位图、图标等资源添加到当前应用程序中。 (3)修改对话框属性。在对话框模板的空白处右击,从弹出 的快捷菜单中选择“属性”命令,弹出如图4-3的“对话属 性”对话框。
1.通过资源编辑器添加控件 打开对话框资源编辑器弹出如图48所示的控 件工具栏之后,就可以方便地在对话框中添加 各种控件了。 (1)单击添加:在控件工具栏上单击要添加 的控件后,将鼠标移动到对话框模板上,此时 鼠标光标变成了“+”形状,在对话框上再次单 击鼠标,控件就添加到对话框模板上了。 (2)拖动添加:拖动要添加的控件到对话框 模板上,然后释放鼠标,也可以添加控件。
4.4.1 设置Windows控件的大小
如果要设置控件的大小,可以利用控件周围 的尺寸调整点实现,如图4-13所示,可看到 控件周围有8个调整点。特别地,对于静态 文本控件,当输入标题内容时,控件的大小 会自动改变。调整控件大小的具体方法如下:
(1)单击要调整的控件并将其选中,此时控 件四周显示出尺寸调整点。 (2)把鼠标光标放在调整点上,当鼠标变为 双向箭头时,水平或垂直拖动鼠标以改变控 件的宽度或者高度。如果希望能等比例地改 变控件的宽度和高度,可以把鼠标光标放在 右下脚的调整点位置进行拖动。 (3)调整为满意大小时停止拖动即可。