3.3 创建对话框及添加控件

更新时间:2023-07-26 20:42:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

VC对话框与控件程序设计大全

3.3 创建对话框及添加控件

我们在模态对话框和非模态对话框的两节中,已经知道了创建对话框和添加控件的的方法,这里我们再做进一步的介绍。

创建对话框

建一个单文档应用程序,名为:创建对话框。

插入一个对话框,其步骤是:Insert Resource 选中Dialog new,便在此程序中创建了一个对话框(当然重复此步骤,可以创建多个对话框)。从中可以看出:

(1)系统为这个对话框自动赋于一个默认的标识符,名为:IDD_DIALOG1,对话框的默认标题为Dialog,有“OK”和“Cancel”两个按钮,这两个按钮的ID标识符分别为IDOK和IDCANCEL

(2)对话框模板资源所在的窗口称为“对话框资源编辑器”,在这里可以通过“控 件工具栏”和“布局工具栏”向对话框添加和布局控件,并可设置对话框的属性。 添加和布局控件

将控件工具栏(图3.3.1)上的某几个控件拖到对话框上,这里拖3个静态文本

控件和一个按钮控件,如图3.3.3所示。用控件布局工具栏(图3.3.2所示)可以对这些控件进行布局、排序、大小调整、上下、左右对齐、测试等。

控件的选择 静态图片

静态文本 编辑框

组框 按钮

复选框 单选按钮

组合框 列表框

水平滚动条 垂直滚动条

旋转按钮 进展条

滑动条 热键

列表视图 树形视图

标签 动画

复合编辑 日期选择

月历 IP地址

用户定制工具 扩展组合框

图3.3.1各个按钮所对应的控件类型

VC对话框与控件程序设计大全

靠齐右边 左右居中 高度相同

测试对话框 靠齐下边 上下间隔相等 显示网格

靠齐左边 上下居中 宽度相同 显示标尺

靠齐上边 左右间隔相同 大小相同 图 3.3.2 控件布局工具栏

图3.3.3 添加对话框资源后的开发环境界面

说 明:

(1)添加控件的方法:

1)左键单击控件栏中某控件不放,移动到对话框的某位置,放开鼠标,控件就

出现在对话框中。

2)左键单击控件栏中某控件之后松开,移动鼠标到对话框上某位置(鼠标箭头

变成“+”字形状),单击左键,控件就出现在这个位置上。

(2)控件的选取:控件的删除、复制和布局操作一般都要先选取控件。

1)单击某个控件,则某个控件被选取。

2)先在对话框内按住鼠标左键不放,移动鼠标,拖出一个大的方虚框,然后释

放鼠标,则被该虚框

所包围的控件都将被选取。

3)先按住Shift键不放,然后用鼠标选取控件,直到所需要的多个控件被选取之

VC对话框与控件程序设计大全

后,再放开Shift键,则这些控件被选取。

4)控件被选取时,鼠标点击对话框,则取消控件的选取。若多个控件被选取,再选取其中一个,则其中一个保留选取,其他控件被取消选取。

5)一旦单个控件被选取后,其四周由选择框包围着,选择框上还有几个(一般是8个)蓝色实心小方块,拖动它可改变控件的大小;多个控件被选取后,其中只有一个控件的选择框有几个蓝色实心小方块,这个控件称为主要控件,如图

1.3.3的Button1(按钮控件)。而其他控件选择框的小方块是空心的,如图1.3.3的Static(3个静态控件)。多个控件的上下、左右对齐、间隔相等及大小一致等,都以主控件为准。

(3)控件的移动、复制和删除

1)当单个控件或多个控件被选取后,按方向键或用鼠标拖动控件的选择框可移动控件。

2)若在鼠标拖动过程中还按住Ctrl键,则复制控件。

3)若按Del键可将选取的控件删除。

(4)测试对话框

“编排”菜单下的Test 命令或布局工具栏上的测试按钮,是用于模拟所编辑的对话框的运行情况,帮助用户检验对话框是否符合用户的设计要求以及空间功能是否有效等。

与布局工具栏相对应的菜单命令在Layout(编排)菜单下,而且大部分命令

均有相应的快捷键,如图3.3.4所示。表3.2还列出了“编排”菜单命令的快捷键与功能描述。“编排”菜单不是在Visual C++6.0开发环境一开始就出现的,而是随着对话框编辑器的打开而显示的。

VC对话框与控件程序设计大全

表3.2 “编排”菜单命令的快捷键及功能描述

菜单命令 快捷键 功能描述

Align --- 对齐控件

Space Evenly --- 空间分布

Make Same Size --- 使多个控件具有相同尺寸

Arrange Button --- 按钮布置

Center in Dialog --- 在对话框内居中

Size to Content Shift+F7 按内容定义尺寸

Auto Size --- 自动大小

Flip --- 翻转

Tab Order Ctrl+D 设置Tab键次序

图3.3.4 编排菜单命令项 Guide Setings --- 网格、标尺等辅助工具的设置 Test Ctrl +T 测试对话框性能

设置对话框的属性

打开前面创建的“创建对话框”应用程序:

(1)点击顶层菜单的View Properties(2)按Alt+Enter(3)用鼠标右键单击对

话框模板 Properties,这3种方式都能弹出对话框的属性框,见图3.3.5所示。

图3.3.5 对话框属性界面

属性框中有:General(一般属性)、Styles((风格)、More Styles(更多风

格)、Extended Styles(扩展风格)、More Extended Styles(更多扩展风格)等部分。下面介绍常用的General属性,如表3.3所示。将新加的对话框的属性

(General)进行如下修改:

(1)改对话框ID标识符为:IDD_MYDIALOG

(2)改对话框标题(Caption)为:我的对话框

(3)单击Font (字体)按钮,将字体改为“宋体,9”,以使自己的对话框和

Windows中的对话框保持外观上的一致。

VC对话框与控件程序设计大全

为对话框添加类

对准对话框的任意非控件位置双击

鼠标,将弹出图3.3.6所示的对话框,询

问是否为对话框资源创建一个新类,选

中Crealte a new class 单击OK 弹出图

3.3.7所示的对话框 写入一个新类的名

字如:CMyDlg(注意:类名应以大写的

“C”开头),下面的基类Base class和ID

标识符内容一般不改。 图 3.3.6 “Adding a Class”对话框图 添加映射消息

View ClassWizard 出现

“MFC ClassWizard”对话框 在

Class name处选择CMyDlg 在

Object IDs里选定IDC_BUTTON1

选中BN_CLICKED(单击该按钮)消

息 Add Function OK Edit Code

图3.3.7 “New Class”对话框

VC对话框与控件程序设计大全

添加代码

在MyDlg.cpp文件的OnButton1()

(按钮消息映射)函数中写:

void CMyDlg::OnButton1()

{ MessageBox(“欢迎进入对话框的设计!”);

}

这时运行还不见对话框被弹出:还需进行下一步。

在程序中调用对话框

由于对话框的代码是以类为模块来设计的,使用时需要在程序中加入该类的

头文件,并定义一个类对象,然后就可以使用该类的相关成员。

打开项目工作区 FileView 打开应用程序的执行文件“创建对话框.cpp”,

在其前面加:#include “MyDlg.h”

在InitInstance函数体中的return TRUE语句之前添加下列代码:

BOOL CMyApp::InitInstance()

{ ….. ……

CMyDlg dlg; // 定义对话框类对象

// DoModal()函数是负责对话框的显示和终止

dlg.DoModal();

return

}

编译运行

对话框被弹出,单击按钮控件“Button1”

则出现小对话框, 上面有“欢迎进入

对话框的设计”的字样,如图3.3.8所示。 图3.3.8 弹出对话框并单击按钮 注意:本例建的CMyDlg类及以后在各个项目中建立的类,在文档、视图、主框架类中都可同样使用。

在按钮控件上直接显示信息

(注意:将上面添加的按钮(Button1)控件拉得长一些,以能显示出写入的全

部信息)用ClassWizard在CMyDlg类中,加WM_INITDIALOG映射消息,步骤是:

View ClassWizard 在Class name框中置CMyDlg 在Messages框中找到

VC对话框与控件程序设计大全

WM_INITDIALOG选中 单击AddFunction Edit Code,便在CMyDlg.cpp文件中建立了BOOL CMyDlg::OnInitDialog()函数,在此函数中加代码:

BOOL CMyDlg::OnInitDialog()

{ CDialog::OnInitDialog();

CStatic *pWnd=(CStatic*)GetDlgItem(IDC_BUTTON1);//得到IDC_BUTTON1控件句柄

pWnd->SetWindowText("直接在按钮上显示文字! ");//将这些字符显示在Button1控件上

}

编译运行

如图3.3.9所示,在按钮控件(Button1)上看到“直接在按钮上显示文字”字

样,而且再单击按钮控件,又显示出一个小对话框,上面写着“欢迎进入对话框的设计!”。如果我们象“模态对话框”和“非模态对话框”那样,用编辑器直接在控件的属性标题处写:“直接在按钮上显示文字”,就简单多了。而像我们这种用程序语句将文字写控件上,比上面做法要复杂得多,因此一般不用这种方法。

说 明:

1.CStatic:是MFC的静态文本控件类。

2.GetDlgItem:是CWnd的成员函数,通过该函数可以得到对话框中某ID号对应的控件的句柄。参数是控件的ID标识符,这里的ID标识符是BUTTON1(该对话框上的按钮标识符)。

3.SetWindowText:是CWnd的一个成员函数,

用于设置窗口(控件)的文本内容。由于控

件类是CWnd的子类(派生类),因此可以使

用基类的 SetWindowText来改变按钮控件的

显示内容。 图3.3.9 在按钮上直接显示信息 对话框资源类型

打开前面的“创建对话框”应用程序,选择顶层菜单的Insert(插入)

Resource或按Ctrl+R,出现“Insert Resource”对话框 选中Dialog项 单

击其左边的“+”号,展开对话框资源的不同类型,如图3.3.10所示,表3.4

VC对话框与控件程序设计大全

列出了各种类型对话框资源的不同用途。其中,“New(新建)”按钮用于创 建一个由“资源类型”列表中指定类型图的新资源,“Import(导入)”按钮是用于将外部已有的位图、图标、光标或其他定制的资源添加到当前应用程序中,“Custom(定制)”按钮用于创建“资源类型”列表中没有的新的类型资源。

3.3.10 对话框资源类型

本文来源:https://www.bwwdw.com/article/nf1m.html

Top