对话框设计和编程

上传人:san****019 文档编号:70497639 上传时间:2019-01-17 格式:PPT 页数:34 大小:798.01KB
返回 下载 相关 举报
对话框设计和编程_第1页
第1页 / 共34页
对话框设计和编程_第2页
第2页 / 共34页
对话框设计和编程_第3页
第3页 / 共34页
对话框设计和编程_第4页
第4页 / 共34页
对话框设计和编程_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《对话框设计和编程》由会员分享,可在线阅读,更多相关《对话框设计和编程(34页珍藏版)》请在金锄头文库上搜索。

1、第4章 对话框设计和编程 构建人机交互界面,提升系统交互能力,教学内容 4.1 对话框基础知识 4.2 对话框设计EX04A示例程序 4.3 滚动条、旋转按钮和滑动条控件 4.4 无模式对话框 4.5 公用对话框 4.6 综合实例宾馆管理系统的界面设计 4.7 小结 思考与练习,4.1 对话框基础知识,4.1.1 对话框的分类 按照运行机制来划分,对话框可分为模式对话框和无模式对话框。 1、对于模式对话框,如打开文件对话框,在该对话框被关闭之前,用户将无法在同一程序的其他地方进行工作。 2、对于无模式对话框,在它仍然保留在屏幕上的同时,用户还可以在应用程序的其它窗口中进行工作。Microsof

2、t Word中的“查找与替换”对话框就是无模式对话框的一个很好的例子,在该对话框打开的同时,我们仍然可以对文档进行编辑。,4.1 对话框基础知识,4.1.2 对话框的组成 1、对话框资源模板 对话框资源模板不但指定了对话框本身的位置、大小、风格等特征,还确定了它所包含的各种控件的位置、大小分割、排列和其他特征,实际上模板中储存了Windows用于创建或显示对话框的所有信息。 2、对话框类 在Visual C+.NET中,每个对话框都必须有一个类与之对应。由于不同的对话框行使的功能各不相同,因此一般需要从CDialog类派生一个新类以完成特定功能。CDialog中提供了多个与对话框编程密切相关的

3、函数供程序员调用,从而大大简化了编程代码,提高效率。,4.1 对话框基础知识,4.1.3 对话框的创建,4.2 对话框设计EX04A示例程序,4.2 对话框设计EX04A示例程序,4.2.1 创建对话框资源 创建对话框资源的步骤如下: 1、运行应用程序向导来产生名为EX04A的单文档的应用程序,并取消“打印和打印预览”选项,其它所有选项选择默认值。 2、插入对话框资源。在应用程序的设计环境中换至“资源视图”框,右击Dialog图标,在弹出的快捷菜单中单击“插入Dialog.”命令,将会在Dialog节点下增加一项ID号为IDD_DIALOG1的对话框模板资源,单击Dialog节点将其展开即可看

4、到。,4.2 对话框设计EX04A示例程序,4.2.1 创建对话框资源 创建对话框资源的步骤如下: 1、运行应用程序向导来产生名为EX04A的单文档的应用程序,并取消“打印和打印预览”选项,其它所有选项选择默认值。 2、插入对话框资源。在应用程序的设计环境中换至“资源视图”框,右击Dialog图标,在弹出的快捷菜单中单击“插入Dialog.”命令,将会在Dialog节点下增加一项ID号为IDD_DIALOG1的对话框模板资源,单击Dialog节点将其展开即可看到。,4.2 对话框设计EX04A示例程序,4.2.1 创建对话框资源 3、设置对话框的属性。选中对话框,在“属性”框中设置对话框的标题

5、:“对话框示例”、对话框ID :IDD_MYDIALOG和其他的一些属性,并扩大对话框的边界到合适的大小。,4.2 对话框设计EX04A示例程序,4.2.1 创建对话框资源 4、向对话框模板中添加控件。利用控件工具箱加入每一个控件,具体方法如下:用鼠标将控件从工具箱中拖到对话框中合适的位置,释放鼠标,并设置其大小。 说明:在对话框编辑界面下,可以选定一个或通过按住Ctrl键不妨用鼠标左键单击选定多个控件,在对话框中复制并粘贴,可以添加如与原来控件外观一样的新控件。,4.2 对话框设计EX04A示例程序,4.2.1 创建对话框资源 5、设置对换框中控件的风格。具体方法如下:用鼠标选定控件,在“属

6、性”对话框中按要求输入控件属性,如在ID框中输入标识控件的唯一ID值,在Caption中输入控件上显示的字符(Edit控件没有这一属性),Visible表示该控件在对话框创建时是否显示,Group用来控制控件分组,Disabled使控件不可用,Tab stop表示是否用Tab键选择控件。,4.2 对话框设计EX04A示例程序,4.2.1 创建对话框资源 6、检查对话框的Tab键顺序。从对话框编辑器的【格式】菜单中选择【Tab键顺序】命令,或者同时按下Ctrl+D键,此时每个控件的左上方都有一个数字,表明了当前Tab键次序。然后按图4-5所示用鼠标依次单击各个控件来设置新的Tab键顺序,最后单击

7、对话框或者按下Enter键结束Tab键顺序设置。,4.2 对话框设计EX04A示例程序,4.2.1 创建对话框资源,4.2 对话框设计EX04A示例程序,4.2.2 定义对话框类,4.2 对话框设计EX04A示例程序,4.2.3 对话框的实现 1、在视图类中添加菜单“【对话框】|【学生问卷调查】”,并利用“添加事件向导”为该菜单添加消息响应函数。 2、向菜单的消息响应函数中添加如下代码: CStuDlg dlg; dlg.DoModal(); /显示对话框 3、在视图类的实现文件(.cpp)中加入对话框类的包含文件: #include “StuDlg.h” 4、编译和测试该应用程序。当单击菜单

8、【对话框】的【学生问卷调查】命令将弹出学生问卷调查对话框。,4.2 对话框设计EX04A示例程序,4.2.4 对话框程序的完善 1、为对话框类加入与控件相对应的成员变量 对话框的主要功能是通过所包含的控件进行数据的输入和输出,要使对话框能与程序通讯,还需给对话框类增加数据成员,以保存各控件的初始值,并从控件读取数据。 与控件对应的成员变量既可以是一个数据变量,也可以是一个控件对象,这将由具体需要来确定。如果是需要交换的控件,则定义对应的数据变量。 如果需要在程序中对控件进行控制,则定义对应的对象。例如,编辑框指定一个CEdit对象,通过CEdit对象,程序员可以控制控件的行为。,4.2 对话框

9、设计EX04A示例程序,4.2 对话框设计EX04A示例程序,4.2.4 对话框程序的完善 2、数据交换和检验 对话框程序运行时,用户更改控件属性,如在编辑框中输入文字或改变复选框的选中状态时,MFC会修改对应控件变量的值。这个过程是通过MFC为对话框类自动添加的成员函数DoDataExchange()实现的,称为对话框数据交换和检验机制。 控件和控件变量之间的数据交换并非自动完成的,而是需要调用CDialog:UpdateData()函数才能实现从控件到控件变量或者从控件变量到控件的数据传送。 CDialog:UpdateData()函数的原型为: BOOL UpdateData(BOOL

10、bSaveAndValidate=TRUE); bSaveAndValidate参数用于指定数据的传输方向,TRUE表示将数据从控件传送给变量,FALSE则表示将数据从变量传给控件。,4.2 对话框设计EX04A示例程序,4.2.4 对话框程序的完善 3、为对话框类添加控件通知消息的处理函数 (1)对CDialog的OnInitDialog函数进行重写,以实现对话框控件的初始化。具体方法如下:将工作区视图切换到“类视图”,并选中对话框类CStuDlg,在该类的属性对话框中用鼠标单击“重写”图标,添加OnInitDialog函数,如图4-8所示。,4.2 对话框设计EX04A示例程序,4.2.4

11、 对话框程序的完善 3、为对话框类添加控件通知消息的处理函数 (2)利用属性对话框为省份组合框添加事件CBN_SELCHANGE的控制函数OnChangeProvice(),以便能够根据选定省份向城市列表框中添加该省份所在的城市。 (3)添加判定复选框是否选中的成员函数GetCheck()实现兴趣和爱好字符串。 (4)利用添加事件处理程序向导为“确定”按钮添加鼠标单击事件BN_CLICKED的事件处理程序OnSubmission()。,4.2 对话框设计EX04A示例程序,4.2.5 对控件进行操作的一般方法 1、获取被操作控件的指针,通过指针调用其成员函数,例如: CEdit *pEdit

12、= (CEdit*)GetDlgItem(IDC_EDIT1); pEdit-Undo(); 2、将被操作控件设置成控件型成员变量,通过该变量名调用控件的成员函数。如将IDC_EDIT1设置成CEdit类型的成员变量m_cEdit,然后就可以执行诸如“m_cEdit.Undo();”这样的语句。 3、可以调用基类CWnd成员函数。在调用被操作控件的成员函数时,除了调用它自己类中定义的成员函数外,千万别忘记它的基类CWnd中定义的成员函数。 CEdit *pEdit = (CEdit*)GetDlgItem(IDC_EDIT1); pEdit-SetWindowText(“本函数可以用来设置窗口

13、的标题或控件的正文”);,4.3 滚动条、旋转按钮和滑动条控件,4.3.1 滚动条控件,4.3 滚动条、旋转按钮和滑动条控件,4.3.1 滚动条控件 1、滚动条的基本操作 在MFC的CScrollBar类中,函数SetScrollRange是用来设置滚动条的滚动范围的,其原型如下: SetScrollRange( int nMinPos, int nMaxPos, BOOL bRedraw = TRUE ); 在CScrollBar类中,设置滚动块位置操作是由SetScrollPos函数来完成的,其原型如下: int SetScrollPos( int nPos, BOOL bRedraw =

14、 TRUE ); 与SetScrollRange 和SetScrollPos相对应的两个函数是分别用来获取滚动条的当前范围以及当前滚动位置: void GetScrollRange( LPINT lpMinPos, LPINT lpMaxPos ) ; int GetScrollPos();,4.3 滚动条、旋转按钮和滑动条控件,4.3.1 滚动条控件 2、 WM_HSCROLL或WM_VSCROLL消息 滚动条进行操作时,会向父窗口发送WM_HSCROLL或WM_VSCROLL消息。 消息映射函数OnHScroll和OnVScroll原型: afx_msg void OnHScroll( U

15、INT nSBCode, UINT nPos, CScrollBar* pScrollBar ); afx_msg void OnVScroll( UINT nSBCode, UINT nPos, CScrollBar* pScrollBar );,4.3 滚动条、旋转按钮和滑动条控件,4.3.2 旋转按钮控件 “旋转按钮控件”是一对箭头按钮,用户点击它们来增加或减少某个值。 一个旋转按钮控件通常是与一个相伴的控件一起使用的,这个控件称为“伙伴窗口”。通常将一个旋转按钮控件与一个编辑控件一起使用,以提示用户进行数据输入。 缺省时,旋转按钮的最小值是100,最大值是0,当用户单击向上箭头减少数值

16、,而点击向下的箭头则增加它。,4.3 滚动条、旋转按钮和滑动条控件,4.3.3 滑动条 滑动条控件是由滑动块和可选的刻度线组成的。当用户用鼠标或方向键移动滑动块时,该控件发送通知消息来表明这些改变。,4.3 滚动条、旋转按钮和滑动条控件,4.3.4 示例程序EX04B,4.4 无模式对话框,1非模态对话框的模板资源必须具有Visible风格,否则对话框将不可见,而模态对话框则无需设置该项风格; 2非模态对话框对象是用new操作符动态创建的,而不象模态对话框那样以对象变量的形式出现。对于非模态对话框,应在对话框的拥有者窗口类内声明一个指向对话框类的指针成员变量,通过该指针可访问非模态对话框对象; 3通过调用CDialog:Create()函数来启动非模态对话框,而不是象模态对话框那样使用CDialog:DoModal()来启动,这是应用非模态对话框的关键之

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号