4.1对话框和常用控件概要

上传人:今*** 文档编号:108069829 上传时间:2019-10-22 格式:PPT 页数:46 大小:357KB
返回 下载 相关 举报
4.1对话框和常用控件概要_第1页
第1页 / 共46页
4.1对话框和常用控件概要_第2页
第2页 / 共46页
4.1对话框和常用控件概要_第3页
第3页 / 共46页
4.1对话框和常用控件概要_第4页
第4页 / 共46页
4.1对话框和常用控件概要_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《4.1对话框和常用控件概要》由会员分享,可在线阅读,更多相关《4.1对话框和常用控件概要(46页珍藏版)》请在金锄头文库上搜索。

1、4 对话框和常用控件,4.1 对话框的使用 4.2 控件的创建和使用方法 4.3 常用控件 4.4 通用对话框和消息对话框,4.1对话框的使用,4.1.1模式和无模式对话框 模式对话框 指当对话框被弹出,用户必须在对话框中作出相应的操作,在退出对话框之前,对话框所在的应用程序不能继续执行。 无模式对话框 指当对话框被弹出后,一直保留在屏幕上,可继续在对话框所在的应用程序中进行其它操作;需要使用对话框时,单击对话框所在的区域即可激活。 在创建和退出对话框窗口时的方式不同: 创建时,模式对话框由系统自动分配内存空间,对话框退出时,对话框对象自动删除。无模式对话框需要程序员来指定内存,退出时需删除对

2、话框对象。 退出时,两种对话框所使用的终止函数不一样。模式对话框通过调用CDialog: EndDialog来终止,无模式对话框则是调用CWnd:DestroyWindow来终止。 函数CDiaolog:OnOK和CDiaolog:OnCancel是调用EndDialog的,因此无模式对话框必须用DestroyWindow来重载OnOK 和OnCancel两个函数。 需要正确删除表示对话框的对象。对模式对话框,在创建函数返回后即可删除对象。无模式对话框不是同步的,在创建函数调用后立即返回,因而不知道何时删除对象,但可以通过重载CWnd:PostNcDestroy函数并执行清除操作。,4.1对话

3、框的使用,4.1.2使用对话框编辑器 打开对话框编辑器 将项目工作区窗口切换到ResourceView页面,双击Dialog目录下任意一个对话框ID。或者,选择“Insert”“Resource”菜单命令(或按快捷键Ctrl+R),选择Dialog项,单击New。,4.1对话框的使用,在对话框中添加和编辑控件 (1)控件添加的方法 在对话框中添加一个控件的方法有下列几种: 在控件工具栏中单击某控件,鼠标箭头在对话框内变成“十”字形状;在对话框指定位置单击鼠标左键,再拖动选择框可改变控件的大小和位置。 在控件工具栏中单击某控件,鼠标箭头对话框内变成“十”字形状;在指定位置处单击鼠标左键不放,拖动

4、鼠标至满意位置,释放鼠标键。 用鼠标左键点中控件工具栏中的某控件,并按住鼠标键不放;在移动鼠标到对话框的指定位置的过程中,会看到一个虚线框,下面带有该控件的标记;释放鼠标键。,4.1对话框的使用,(2)单个控件的选取 鼠标选取 保证选择按钮( )是被选中的,移动鼠标指针至指定的控件上,单击鼠标左键。 助记符选取 在相应的控件上右击。选择“Properties”菜单项,对话框中的“Caption”框是用来输入控件的标题,在标题中的某个字母之前键入“&”符号,则该字母就是此控件的助记符。 Tab键选取 利用Tab键,可在对话框内的控件中进行选择。每按一次Tab键依次选取对话框中的下一个控件,若按住

5、Shift键,再单击Tab键则选取上一个控件。 (3)多个控件的选取 在对话框内按住鼠标左键不放,拖出一个大的虚框,释放鼠标,则被该虚框所包围的控件都将被选取。 先按住Shift键不放,用鼠标选取控件,直到所需要的多个控件选取之后再释放Shift键。若在选取时,对已选取的控件再选取一下,则该控件取消选取。 一旦单个控件被选取后,其四周由选择框包围着,选择框上还有几个(通常是八个)蓝色实心小方块,拖动它可改变控件的大小,如图。 多个控件被选取后,其中只有一个控件的选择框有几个蓝色实心小方块,这个控件称为主要控件,而其他控件的选择框的小方块是空心的。如图。,4.1对话框的使用,(4)控件的移动、删

6、除和复制 当单个控件或多个控件被选取后,按方向键或用鼠标拖动控件的选择框可移动控件。若在鼠标拖动过程中还按住Ctrl键则复制控件。若按Del键可将选取的控件删除。 (5)设定控件的Tab键次序 一是改变用Tab键选择控件的次序,二是当两个或两个以上的控件构成一组时,需要它们的Tab键次序连续。 对话框内控件的Tab键次序设定步骤如下: 首先,选择“Layout”“Tab Order”命令,或按Ctrl+D,此时每个控件的左上方都有一个数字,表明了当前Tab键次序,如图。 其次,按新的次序依次用鼠标单击各个控件,新的Tab键即可生成。 最后,单击对话框或按Enter键结束Tab Order 方式

7、。,控件的Tab键次序,4.1对话框的使用,(6)对话框内的控件的布局,Layout菜单命令项,控件布局工具栏,4.1对话框的使用,大多布置控件的命令使用前,需要选取多个控件,且“主要控件”起到了关键作用。多个控件的布置过程中,常需要重新设置“主要控件”。设置的方法是按住Ctrl或Shift键,用鼠标单击所要指定的控件。 系统提供了网格、标尺等辅助工具。在控件布局工具栏的最后两个按钮分别用来网格和标尺的切换。一旦网格显示,添加或移动控件时都将自动定位在网格线上。“Layout”菜单下的“Guide Settings”命令提供了设置网格单元大小的功能,如图。 测试对话框,Guide Settin

8、gs对话框,4.1对话框的使用,4.1.3对话框的编程 添加对话框资源 选择“Insert”“Resource”菜单命令(或按Ctrl+R),若单击Dialog项左边的“+”号,将展开对话框资源的不同类型选项,如图。,“Insert Resource”对话框,4.1对话框的使用,改变对话框的属性 在对话框模板的非控件的区域内左击,用下列方式之一打开属性对话框: 选择“View”菜单“Properties”命令或按Alt+Enter健。 用鼠标右击对话框模板,选取Properties命令。 如图,General是对话框属性的默认显示页面,其中列有对话框的标识符名称框、标题框等,具体说明如表。,属

9、性对话框,4.1对话框的使用,向对话框内添加控件 添加一个类 在对话框模板的非控件的区域内双击,如图的对话框。 单击OK,弹出如图的对话框。可以为对话框资源定义一个新类名。,“Adding a Class”对话框,“New Class”对话框,4.1对话框的使用,消息映射 单击OK按钮,出现“MFC ClassWizard”对话框,如图。,“MFC ClassWizard”对话框,4.1对话框的使用,选定IDC_BUTTON1的BN_CLICKED,双击左键或单击Add Function按钮,如图。 对话框中,可以为添加的成员函数名重新定义,单击OK。选定成员函数OnButton1项,双击左键

10、或单击Edit Code按钮,在此成员函数添加代码。 不同资源对象(控件、菜单命令等)的消息是不相同的。例如,按钮控件IDC_BUTTON1的消息有两个:BN_CLICKED和BN_DOUBLECLICKED,分别表示当用户单击或双击该按钮时产生的消息。 一般不需要对对话框中的OK(确定)与Cancel(取消)按钮进行消息映射,因为系统已自动设置了这两个按钮的动作,当用户单击这两个按钮都将自动关闭对话框。,“Add Member Function”对话框,4.1对话框的使用,添加用户代码 (1)在头文件(MyDlg.h文件)中声明消息处理函数OnButton1: protected: /AFX

11、_MSG(CMyDlg) afx_msg void OnButton1(); /AFX_MSG (2)在MyDlg.cpp源文件开头部分的消息映射入口,添加消息映射宏: BEGIN_MESSAGE_MAP(CMyDlg, CDialog) / 消息映射开始 /AFX_MSG_MAP(CMyDlg) ON_BN_CLICKED(IDC_BUTTON1, OnButton1) /AFX_MSG_MAP END_MESSAGE_MAP() / 消息映射结束 表明消息及其处理函数之间的联系。单击按钮控件IDC_BUTTON1时,系统将自动调用OnButton1函数。 (3)在MyDlg.cpp文件中写

12、入一个空的消息处理函数的模板,以便用户填入具体代码,如下面的框架: void CMyDlg:OnButton1() / TODO: Add your control notification handler code here ,4.1对话框的使用,在程序中使用对话框 (1)利用项目工作区的ClassView标签项,将Ex_SDIHello.cpp源文件打开; (2)在Ex_SDIHello.cpp源文件的前面加上包含类CMyDlg的头文件: #include “MyDlg.h“ (3)在InitInstance函数体中的“return TRUE;”语句之前添加下列代码: CMyDlg dlg

13、; dlg.DoModal(); DoModal是模式对话框最常用的函数,它负责对话框的显示和终止。 (4)编译并运行。在程序的一开始就出现用户自己设计的对话框,单击Button1按钮将弹出“欢迎进入对话框的设计!”的消息对话框来。,4.2控件的创建和使用方法,4.2.1控件的创建方法 控件的创建方式有以下两种: 一种是在对话框模板中用编辑器指定控件,也就是说,将控件的父窗口指定为对话框,这样做的好处是明显的,因为当应用程序启动该对话框时,Windows系统就会为对话框创建控件;而当对话框消失时,控件也随之清除。 另一种方式是将控件看作是任一窗口的子窗口,并通过调用相应的Create函数来创建

14、。 例Ex_SDIHello 在上例Ex_SDIHello的基础上用子窗口方式创建控件。 (1)打开CMyDlg的头文件MyDlg.h,添加一个按钮类CButton指针变量: class CMyDlg : public CDialog / Construction public: CMyDlg(CWnd* pParent = NULL); / standard constructor CButton *m_btnWnd; ,4.2控件的创建和使用方法,(2)按Ctrl+W快捷键打开对话框,切换到Message Maps页面,在Object IDs列表中选定“CMyDlg”项,并在Message

15、列表中找到WM_INITDIALOG消息,双击鼠标左键,然后单击Edit Code按钮,添加下列代码: BOOL CMyDlg:OnInitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here m_btnWnd = new CButton(); / 构造按钮控件 m_btnWnd -Create(“你好“, WS_CHILD | WS_VISIBLE | BS_PUSHBUTTON, CRect(20, 20, 120, 60), this, 201); / 创建 CFont *font = this-Ge

16、tFont(); / 获取对话框的字体 m_btnWnd-SetFont(font); / 设置控件字体 return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE Create用来创建一个按钮控件,第一个参数指定按钮的标题,第二个参数指定控件的风格,第三个参数指定它在父窗口中的位置和大小,第四个参数指定父窗口指针,最后一个参数是指定该控件的标识值。 (3)编译并运行,,4.2控件的创建和使用方法,4.2.2控件的数据交换和数据校验 例如,为CMyDlg类的按钮控件IDC_BUTTON1添加并使用其成员变量m_MyBtn,则其相应的过程如下: (1)启动MFC ClassWizard,切换到Member Variables页面,如图。 (2)选定Class name为CMyD

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

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

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