第5章对话框和常用控件 51对话框的使用 52控件的创建和使用方法 作业1 53常用控件 54通用对话框和消息对话框 作业2
第5章对话框和常用控件 5.1 对话框的使用 5.2 控件的创建和使用方法 作业1 5.3 常用控件 5.4 通用对话框和消息对话框 作业2
51对话框的使用 5.11模式和无模式对话框 模式对话框 指当对话框被弹出,用户必须在对话框中作出相应的操作,在退出对话框之 前,对话框所在的应用程序不能继续执行。 无模式对话框 指当对话框被弹出后,一直保留在屏幕上,可继续在对话框所在的应用程序 中进行其它操作;需要使用对话框时,单击对话框所在的区域即可激活。 在创建和退出对话框窗口时的方式不同: 创建时,模式对话框由系统自动分配内存空间,对话框退出时,对话框对象 自动删除。无模式对话框需要来指定内存,退出时还需删除对话框对象。 退出时,两种对话框所使用的终止函数不一样。模式对话框通过调用 CDialog: EndDialog来终止,无模式对话框则是调用 CWnd: Destroy Window来终止。 函数 CDialog:OnoK和 CDialog: On Cancel是调用 EndDialog的,因此无模 式对话框必须用 DestroyWindow来重载OnOK和 On Cancel两个函数 需要正确删除表示对话框的对象。对模式对话框,在创建函数返回后即可删 除对象。无模式对话框不是同步的,在创建函数调用后立即返回,因而不知 道何时删除对象,但可以通过重载CWnd: PostNcDestroyl函数并执行清除操 作
5.1对话框的使用 5.1.1模式和无模式对话框 ➢ 模式对话框 ◆ 指当对话框被弹出,用户必须在对话框中作出相应的操作,在退出对话框之 前,对话框所在的应用程序不能继续执行。 ◆ 无模式对话框 ◆ 指当对话框被弹出后,一直保留在屏幕上,可继续在对话框所在的应用程序 中进行其它操作;需要使用对话框时,单击对话框所在的区域即可激活。 在创建和退出对话框窗口时的方式不同: ◆ 创建时,模式对话框由系统自动分配内存空间,对话框退出时,对话框对象 自动删除。无模式对话框需要来指定内存,退出时还需删除对话框对象。 ◆ 退出时,两种对话框所使用的终止函数不一样。模式对话框通过调用 CDialog:: EndDialog来终止,无模式对话框则是调用 CWnd::DestroyWindow来终止。 ◆ 函数CDiaolog::OnOK和CDiaolog::OnCancel是调用EndDialog的,因此无模 式对话框必须用DestroyWindow来重载OnOK 和OnCancel两个函数。 ◆ 需要正确删除表示对话框的对象。对模式对话框,在创建函数返回后即可删 除对象。无模式对话框不是同步的,在创建函数调用后立即返回,因而不知 道何时删除对象,但可以通过重载CWnd::PostNcDestroy函数并执行清除操 作
51对话框的使用 5.1.2使用对话框编辑器 >打开对话框编辑器 将项目工作区窗口切换到 Resourceview页面,双击 Dialog目录下任意一个对 话框ID。或者,选择“ Insert”→“ Resource菜单命令(或按快捷键Ctrl+R), 选择 Dialog项,单击NeW Is,BIALDGICisleel 网区 Stil. tait Yw Luert beset hld Layet Leels tinde yals 日,·巴曾 ASTUDENT 默认对话框 -a Dialog 模板 默认对话框 资源ID号 aString Table 控件工具栏 b日团画 布局工具栏 oNBuild (Debue A Find in files 1 X Find in Files 2R .Il 0187×9 图5.1打开的对话框编辑器
5.1对话框的使用 5.1.2使用对话框编辑器 ➢ 打开对话框编辑器 将项目工作区窗口切换到ResourceView页面,双击Dialog目录下任意一个对 话框ID。或者,选择“Insert”→“Resource”菜单命令(或按快捷键Ctrl+R), 选择Dialog项,单击New。 图5.1 打开的对话框编辑器 控件工具栏 布局工具栏 默认对话框 资源ID号 默认对话框 模板 基准线 标尺
51对话框的使用 在对话框中添加和编辑控件 (1)控件添加的方法 在对话框中添加一个控件的方法有下列几种 在控件工具栏中单击某控件,鼠标箭头在对话框内变成“十”字形状;在对话框指定 位置单击鼠标左键,再拖动选择框可改变控件的大小和位置。 在控件工具栏中单击某控件,鼠标箭头对话框内变成“十”字形状;在指定位置处单 击鼠标左键不放,拖动鼠标至满意位置,释放鼠标键 用鼠标左键点中控件工具栏中的某控件,并按住鼠标键不放;在移动鼠标到对话框的 指定位置的过程中,会看到一个虚线框,下面带有该控件的标记;释放鼠标键。 控件的选择 静态图片 静态文一 Aa abl 编辑框 组框 按钮 单选框 组合框 面国 表框 垂直滚动条 旋转按钰 进展条 滑动 热键 列表视图 树形视图 标签 □目 复合编辑 日期选择 月历 IP地址 用户定制工 组合框的扩 图52控件工具栏和各按钮含义
5.1对话框的使用 在对话框中添加和编辑控件 (1)控件添加的方法 在对话框中添加一个控件的方法有下列几种: ◆ 在控件工具栏中单击某控件,鼠标箭头在对话框内变成“十”字形状;在对话框指定 位置单击鼠标左键,再拖动选择框可改变控件的大小和位置。 ◆ 在控件工具栏中单击某控件,鼠标箭头对话框内变成“十”字形状;在指定位置处单 击鼠标左键不放,拖动鼠标至满意位置,释放鼠标键。 ◆ 用鼠标左键点中控件工具栏中的某控件,并按住鼠标键不放;在移动鼠标到对话框的 指定位置的过程中,会看到一个虚线框,下面带有该控件的标记;释放鼠标键。 控件的选择 静态文本 组框 复选框 组合框 水平滚动条 旋转按钮 滑动条 列表视图 标签 复合编辑 月历 用户 定制工 具 静态图片 编辑框 按钮 单选框 列表框 垂直滚动条 进展条 热键 树形视图 动画 日期选择 IP地址 组合框的扩 展 图5.2 控件工具栏和各按钮含义
51对话框的使用 (2)单个控件的选取 ≯鼠标选取 保证选扌钮()是被选中的,移动鼠标指针至指定的控件上,单击鼠标左键 >助记符选取 在相应的控件上右击。选择“ Properties菜单项,对话框中的“ Caption”框是用来 输入控件的标题,在标题中的某个字母之前键入“&符号,则该字母就是此控件的助记符。 Tab键选取 利用Tab键,可在对话框内的控件中进行选择。每按一次Tab键依次选取对话框中 的下一个控件,若按住 Shift键,再单击Tab键则选取上一个控件。 (3)多个控件的选取 ◆在对话框内按住鼠标左键不放,拖出一个大的虚框,释放鼠标,则被该虚框所包围的控件 都将被选取 ◆先按住Shit键不放,用鼠标选取控件,直到所需要的多个控件选取之后再释放 Shift键。若 在选取时,对已选取的控件再选取一下,则该控件取消选取。 旦单个控件被选取后,其四周由选择框包围着,选择框上还有几个(通常是八个)蓝色实 心小方块,拖动它可改变控件的大小,如图 ◆多个控件被选取后,其中只有一个控件的选择框有几个蓝色实心小方块,这个控件称为主 要控件,而其他控件的选择框的小方块是空心的。如图。 Check1 B Button 图53单个控件和多个控件的选择框
5.1对话框的使用 (2)单个控件的选取 ➢鼠标选取 保证选择按钮( )是被选中的,移动鼠标指针至指定的控件上,单击鼠标左键。 ➢助记符选取 在相应的控件上右击。选择“Properties”菜单项,对话框中的“Caption”框是用来 输入控件的标题,在标题中的某个字母之前键入“&”符号,则该字母就是此控件的助记符。 ➢Tab键选取 利用Tab键,可在对话框内的控件中进行选择。每按一次Tab键依次选取对话框中 的下一个控件,若按住Shift键,再单击Tab键则选取上一个控件。 (3)多个控件的选取 ◆在对话框内按住鼠标左键不放,拖出一个大的虚框,释放鼠标,则被该虚框所包围的控件 都将被选取。 ◆先按住Shift键不放,用鼠标选取控件,直到所需要的多个控件选取之后再释放Shift键。若 在选取时,对已选取的控件再选取一下,则该控件取消选取。 ◆一旦单个控件被选取后,其四周由选择框包围着,选择框上还有几个(通常是八个)蓝色实 心小方块,拖动它可改变控件的大小,如图。 ◆多个控件被选取后,其中只有一个控件的选择框有几个蓝色实心小方块,这个控件称为主 要控件,而其他控件的选择框的小方块是空心的。如图。 (b) 图5.3 单个控件和多个控件的选择框 (a)
51对话框的使用 (4)控件的移动、删除和复制 当单个控件或多个控件被选取后,按方向键或用鼠标拖动控件的选择框可 移动控件。若在鼠标拖动过程中还按住α键则复制控件。若按Del键可将 选取的控件删除。 (5)设定控件的Tab键次序 是改变用Tab键选择控件的次序,二是当两个或两个以上的控件构成一组 时,需要它们的Tb键次序连续 对话框内控件的Tab键次序设定步骤如下: 首先,选择“ Layout> Tab order”命令,或按Cr+D,此时每个控件的左 上方都有一个数字,表明了当前Tab键次序,如图。 其次,按新的次序依次用鼠标单击各个控件,新的Tab键即可生成。 最后,单击对话框或按 Enter键结束 Tab order方式。 CheckI 4153 heck 2 Button 图54控件的Tab键次序
5.1对话框的使用 (4)控件的移动、删除和复制 当单个控件或多个控件被选取后,按方向键或用鼠标拖动控件的选择框可 移动控件。若在鼠标拖动过程中还按住Ctrl键则复制控件。若按Del键可将 选取的控件删除。 (5)设定控件的Tab键次序 一是改变用Tab键选择控件的次序,二是当两个或两个以上的控件构成一组 时,需要它们的Tab键次序连续。 对话框内控件的Tab键次序设定步骤如下: ◆ 首先,选择“Layout”→“Tab Order”命令,或按Ctrl+D,此时每个控件的左 上方都有一个数字,表明了当前Tab键次序,如图。 ◆ 其次,按新的次序依次用鼠标单击各个控件,新的Tab键即可生成。 ◆ 最后,单击对话框或按Enter键结束Tab Order 方式。 图5.4 控件的Tab键次序
51对话框的使用 对话框内的控件的布局 Al Space Evenly 靠齐右边 Make Same Siz 测试对话框 靠齐下边 上下间 range Buttons Center in Dialog Size to Content Shi fttFT 羿菇回丽H王曰田图口 Auto size 田Ei Tab Order CtrltD 左右间相等 靠齐左 宽度相同 Gui de Settings. 图5.5控件布局工具栏 y Test Ctrl+t 图561ayou菜单命令项 表51 Layout菜单命令的快捷键及功笙指述 单合今 快捷健 功建珠 对齐控制 空间分布 Make same size 使多个控件具有相同尺寸 Arrange Buttons 按钮布置 Center in dialog 在对话框内居中 Size to Content Shift+Ft 按内容定义尺寸 Auto size 动大小 翻转 Tab Order Ctrl+D 设置Tb键次序 Guide Settings 网格、标尺等辅助工具的设置 Ctrl+T 则试对话椎性能
5.1对话框的使用 对话框内的控件的布局 图5.6 Layout菜单命令项 靠齐上边 左右间隔相等 大小相同 靠齐左边 上下居 中 宽度相同 显 示 标 尺 靠齐右边 左右居中 高度相同 测试对话框 靠齐下边 上 下 间 隔相等 显示网格 图5.5 控件布局工具栏
51对话框的使用 大多布置控件的命令使用前,需要选取多个控件,且“主要控件”起到了 关键作用。多个控件的布置过程中,常需要重新设置“主要控件”。设置 的方法是按住Ctr或Shit键,用鼠标单击所要指定的控件。 系统提供了网格、标尺等辅助工具。在图5.5的控件布局工具栏的最后两个 按钮分别用来网格和标尺的切换。一旦网格显示,添加或移动控件时都将 自动定位在网格线上。“ Layout菜单下的“ Guide Settings”命令提供了设 置网格单元大小的功能,如图 测试对话框 Layout guides C None F Rulers and guides Grid spacing 图5.7 Guide settings对话框 表5.2 Guide Setting对话框各选项的含义 None 不 显示任何辅助工具 Rulers ard guides显示标尺和基佳线 显示网格 Width 网格单元的宽度,DLUs是系统使用的单位,一个DLU宽度相 当于对话框中字体平均宽度的14 Height 网格单元的高度,DLUs是系统使用的单位,一个DLU高度相 当于对话框中字体平均高度的1
5.1对话框的使用 ◆ 大多布置控件的命令使用前,需要选取多个控件,且“主要控件”起到了 关键作用。多个控件的布置过程中,常需要重新设置“主要控件”。设置 的方法是按住Ctrl或Shift键,用鼠标单击所要指定的控件。 ◆ 系统提供了网格、标尺等辅助工具。在图5.5的控件布局工具栏的最后两个 按钮分别用来网格和标尺的切换。一旦网格显示,添加或移动控件时都将 自动定位在网格线上。“Layout”菜单下的“Guide Settings”命令提供了设 置网格单元大小的功能,如图。 ➢ 测试对话框 图5.7 Guide Settings对话框
51对话框的使用 513对话框的编程 添加对话框资源 选择“ Insert→ Resource”菜单命令(或按ctrl+R),若单击 Dialog项左边的 “+”号,将展开对话框资源的不同类型选项,如图。 三 D OLE PROPPAGE SMALL便E 彐0 )PROPPAGE MEDIUM [English 三 D PROPPAGE SMALL ENglish 图58“ Insert resource”对话框 表53对话框资源类型 型 说阻且 DD DIALOGBAR 对话条,往往和工具条停放一起 IDD FORM正W 个表状风格的对话框,用于无模式对话框或视图类 IDD OLE PROPPAGE LARG一个大的OLE属性页 IDD OLE PROPPAGE SMAL 小的OE属性页 IDD PROPPAGE LARGE 个大属性页,用于属性对话框 IDD PROPPAGE MEDIUM一个中等大小的属性页,用于属性对话框 IDD PROPPAGE SMALL 个小的属性页,用于属性对话框
5.1对话框的使用 5.1.3对话框的编程 ➢ 添加对话框资源 选择“Insert”→“Resource”菜单命令(或按Ctrl+R),若单击Dialog项左边的 “+”号,将展开对话框资源的不同类型选项,如图。 图5.8 “Insert Resource”对话框
51对话框的使用 改变对话框的属性 在对话框模板的非控件的区域内左击,用下列方式之一打开属性对话框: ◆选择“vew菜单→“ Properties”命令或按At+ Enter健。 用鼠标右击对话框模板,选取 Properties命令。 如图, General是对话框属性的默认显示页面,其中列有对话框的标识符名 称框、标题框等,具体说明如表 Dial.c Preperties 41 General Styles More Styles I Extended Styles I More E: OD ID:IDD DIALOG1 Caption: Dialog Font name:宋体 Menu: size L」xPs:Y Pos Class name 图59属性对话框 表54对话栖的 Genera足性 说阻且 修改或选择对话框的标识符名称 Carton框输入对话框的标题名称,中英文均可,如“我的对话框” Fort按钮单击此按钮可选择宇体的种类如宋体)及尺寸(如9号) Xpos/Y pos对话框左上角在父窗口中的X、Y坐标,都为0时表示居中 Memu框默认值为无,当对话框需要菜单时输入或选择指定的菜单资源 默认值为无,它提供CC+语言编程时所需要的对话框类名,对MFC Class name 类库的资源文件来说,该项不被激活
5.1对话框的使用 ➢ 改变对话框的属性 在对话框模板的非控件的区域内左击,用下列方式之一打开属性对话框: ◆ 选择“View”菜单→“Properties”命令或按Alt+Enter健。 ◆ 用鼠标右击对话框模板,选取Properties命令。 如图,General是对话框属性的默认显示页面,其中列有对话框的标识符名 称框、标题框等,具体说明如表。 图5.9 属性对话框