第3讲 对话框设计.docx
- 文档编号:30736208
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:23
- 大小:59.06KB
第3讲 对话框设计.docx
《第3讲 对话框设计.docx》由会员分享,可在线阅读,更多相关《第3讲 对话框设计.docx(23页珍藏版)》请在冰豆网上搜索。
第3讲对话框设计
第三讲对话框—创建和设计
对话框是程序开发中最常使用的一种工具,主要可完成以下二项任务:
1.把程序的运行信息反馈给用户
2.允许用户把信息输入应用程序
一.创建一个基于对话框的应用程序
1.选择“File\New”菜单
2.在New对话框中选择Projects选项卡,并;
1)在左侧列表框中选择:
MFCAppWizard(exe)
2)在Projectname编辑框中输入:
Person
3)在Location列表框中选择适当的路径
4)单击“OK”按钮
3.在MFCAppWizard-Step1对话框中选择:
1)Whattypeofapplicationwouldyouliketocreate?
:
DialogBased
2)Document/Viewarchitecturesupport?
选中
3)Whatlanguage……?
选择“中文[中国]…..”
4)单击Finish按钮。
关闭对话框,结束应用程序的设置。
二.修改应用程序的主对话框
1.显示主对话框模板:
1)在项目工作区选择ResourceView选项卡
2)展开项目名前的“+”
3)展开Dialog前的“+”
4)双击主对话框资源标识符IDD_PERSON_DIALOG
2.删除文本“TODO:
在这里设置对话控制。
”
用鼠标左键单击对话框图中央的文本“TODO:
在这里设置对话控制。
”,
按Delete键将其删除
3.增加按钮控件
1)从Control工具条中选择Button控件
此时鼠标光标由箭头变成“+”
2)将“+”光标移到主对话框中央,单击鼠标左键
此时主对话框中央出现一个名为“Button1”的新按钮
3)按Enter键(或右击“Button1”按钮,再从弹出的环境菜单中选择
Properties菜单项)
此时弹出”PushButtonProperties”对话框
4)把”PushButtonProperties”对话框的Caption编辑框中的内容由
“Button1”改成“输入”
三.创建一个新对话框模板
方法有二种:
1.方法一:
1)在项目工作区中选择ResourceView选项卡
2)展开项目名前的“+”号
3)用鼠标右击Dialog资源项
此时弹出操作Dialog的环境菜单
4)从操作Dialog的环境菜单选择”InsertDialog”菜单项
此时VC开发环境会自动向项目中添加一个资源符号为IDD_DIALOG1
的对话框模板
2.方法二:
1)选择”Insert\Resource…”菜单项
此时会弹出“InsertResource”对话框如下:
图3-1
2)在“ResourceType”列表框中选择“Dialog”项
3)单击“New”按钮
四.修改新对话框的标题和风格
1.打开对话框属性设置对话框
有二种方法:
1)方法一:
(1)用鼠标右击对话框中无文本和控件的位置(如标题栏)
此时弹出操作对话框的环境菜单
(2)在环境菜单中选择“Properties”菜单
此时显示“DialogProperties”对话框(对话框属性设置对话框)
2)方法二:
(1)左击对话框中无文本和控件的位置(如标题栏)
(2)按“Enter键”
此时也显示“DialogProperties”对话框如下:
图3-2
2.修改新对话框模板的资源符号
将“DialogProperties”对话框的“ID:
”编辑框内容由“IDD_DIALOG1”
改成“IDD_PERSONALITY”
3.修改新对话框模板的标题
将“DialogProperties”对话框的“Caption:
”编辑框内容由“Dialog”
改成“员工资料输入:
”,此时可看到新对话框的标题也作了相应的改变。
4.对话框的字体和位置
1)字体:
选择“DialogProperties”对话框的“Font…”按钮会弹出字
体设置对话框,从中可改变字体和字号
2)位置:
用编辑框“XPos:
”和“YPos:
”可设置对话框第一次显示的
位置,坐标0表示第一次显示时位于父窗口的中心位置。
5.简介“DialogProperties”对话框的其它功能。
五.为新对话框创建一个新类
有三种方法:
1.方法一:
1)选择项目工作区的“ResourceView”选项卡
2)展开资源“Dialog”前的“+”号
此时可看到新对话框的资源符号“IDD_PERSONALITY”
3)左键单击资源符号“IDD_PERSONALITY”
此时资源符号“IDD_PERSONALITY”应为反色显示
4)选择“View\ClassWizard…”菜单项
此时应弹出“MFCClassWizard”对话框
在上述对话框上,还覆盖着一个询问是否要为新对话框模板创建一
个新类的“AddingaCalss”对话框如下:
图3-3
5)单击“AddingaCalss”对话框的“OK”按钮
此时又弹出一个创建新类的“NewClass”对话框如下:
图3-4
6)在“NewClass”对话框设置:
(1)在“Name:
”编辑框中输入:
CPersonality
(2)在“BaseClass”下拉列表中选:
CDialog
(3)在“DialogID:
”中应为:
IDD_PERSONALITY
(4)单击“OK”按钮,关闭“NewClass”对话框
7)检查项目工作区的“ClassView”选项卡
可以看到其中增加了一个新类CPersonalityDlg
2.方法二:
双击新对话框中无文本和控件的位置(如标题栏)
此时将显示方法一中4)步所显示的相同界面,以下同方法一
3.方法三:
选择“Insert\NewClass…”菜单项
此时将显示方法一中5)步所显示的相同界面,以下同方法一
六.在“Personality”对话框中增加控件
1.增加二个静态文本“姓名:
”、“出生年月:
”
2.增加二个编辑框
3.增加“性别”、“婚姻情况”和“个人特点”三个组合框
4.在“性别”组合框增中加“男”、“女”二个单选按钮
5.在“婚姻情况”组合框中增加“已婚”、“未婚”二个单选按钮
6.在“个人特点”组合框增加四个复选按钮
7.将按钮文本“OK”和“Cancel”修改成“确定”和“取消”
增加控件后,“Personality”对话框形如图3-5
图3-5
七.调整对话框和控件的尺寸
1.对话框
1)单击对话框中列文本和控件的位置(如标题栏)
此时对话框四周出现一个虚框和八个小正方形,其中有三个兰色正
方形
2)把鼠标光标停留在任一个兰色小正方形上
此时光标变成一个双向的箭头
3)按住鼠标左键并移动
此时对话框的轮廓线也随之改变,
4)当对话框的尺寸达到所需大小时放开鼠标左键,这时的对话框大小将与
预期的一致
2.控件
控件的尺寸调整方法与对话框的尺寸调整方法相同。
八.控件的定位
1.选择多个控件
有二种方法:
1)方法一:
按住Ctrl键的同时,用鼠标左键点击要选择的若干个控件
此时被点击到的控件的四周会出现方框,表示已被选中
2)方法二:
按住鼠标左键并移动,此时会出现一个虚线的框,当该虚框围住需选
择的控件时放开左键,此时相应的控件会显示选中标记
注:
在多个被选中控件中,只有一个控件的四周有兰色的实心小方块,这
个控件称作调整基准控件
2.控件的定位
当选中多个控件时,可根据基准控件方便地调整这些被选中的控件的
尺寸和位置,方法有三种:
1)方法一:
利用”Layout”主菜单的下拉子菜单进行调整——详细介绍
2)方法二:
利用”Dialog”工具条按钮进行调整——详细介绍
3)方法三:
利用标志线调整位置
(1)设置标志线——单击对话框模板左方或上方的标尺
(2)当控件靠近标志线时,会自动咬住标志线并随之移动,利用此特性
就可使多个控件相互对齐
注:
要删除已设置的标志线可如下操作:
1)删除一条标志线
(1)把鼠标光标停在标尺中的标志线箭头上
(2)单击右键——此时拉出环境菜单
(3)在环境菜单中选择“Clear”菜单项即可
2)删除全部标志线
(1)把鼠标光标停在标尺中(在不在标志线箭头上均可)
(2)单击右键——此时拉出环境菜单
(3)在环境菜单中选择“Clearall”菜单项即可
九.Tab键控制次序的设置和测试
1.设置
1)选择“Layout\TabOrder”菜单项
此时对话框中各控件上显示出数字序号
2)按所希望的控件接收输入焦点的次序,依次逐个点击相应的控件
此时各控件上按点击次序显示出数字序号,这就是所希望的Tab键控
制次序
3)再选择“Layout\TabOrder”菜单项,去除该项前面的选中标志“√”
此时各控件上数字序号消失
2.测试
1)选择“Layout\Test”菜单项
此时弹出“Personality”对话框,与运行时弹出对话框完全一样
2)按Tab键,可看到输入焦点在各控件间依次切换
十.键盘快捷键的设置和测试
1.设置
在控件标题的某个字母之前加一个“&”字符,就把该字符设置成了相
应控件按受输入焦点的快捷键。
注:
所谓快捷键是指:
在按下Alt键的同时再按下该键,即可使相应控件获
得输入焦点的键
2.测试
与Tab键控制次序的测试方法一样
十一.“Personality”对话框的使用
1.确定使用埸所
本例拟在按下“Person”主对话框的“输入”按钮时调用“Personality”
对话框
2.在CPersonDlg.cpp文件添加一条语句(红色的),具体位置如下:
#include"stdafx.h"
#include"Person.h"
#include"PersonDlg.h"
#include"PersonalityDlg.h"
2.为“Person”对话框的“输入”按钮增加一个消息响应函数OnInput()如下:
voidCPersonDlg:
:
OnInput()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
}
3.在OnInput()添加两条语句如下:
voidCPersonDlg:
:
OnInput()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
CPersonalityDlgdlg;
dlg.DoModal();
}
4.运行程序,按“输入”按钮,观察程序的运行情况
第四讲按钮控件
按钮有三种类型:
下压按钮——用于执行一条命令
单选钮——允许在一组互斥选项间进行选择
复选钮——可以在一组选项间选择多项
文本有二种型式:
静态文本——用于在对话框中显示信息
编辑控件——用于在对话框中接收输入文本
一.下压按钮
在“Person”对话框模板中增加五个下压按钮,使对话框形如:
图4-1
各按钮的资源符号分别为:
禁用IDC_DISEBLE
隐藏IDC_HIDE
添加IDC_ADD
删除IDC_DELETE
恢复IDC_RESTORE
(一)按钮的显示与隐藏
1.为“隐藏”按钮增加一个单击事件处理函数
1)左键双击“隐藏”按钮,此时显示”AddMemberFunction”对话框
2)单击”AddMemberFunction”对话框的“OK”按钮
此时VC开发工具在“Person”对话框应用程序增添了三个内容:
(1)在头文件CPersonDlg.h添加了一条函数声明:
afx_msgvoidOnHide();
前缀afx_msg表示该函数是消息响应函数
(2)在实现文件CPersonDlg.cpp添加了一个消息映射入口(红色):
BEGIN_MESSAGE_MAP(CPersonDlg,CDialog)
//{{AFX_MSG_MAP(CPersonDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_INPUT,OnInput)
ON_BN_CLICKED(IDC_HIDE,OnHide)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
注意:
VC开发工具用以下语句对作为括弧界定消息映射入口:
BEGIN_MESSAGE_MAP(CPersonDlg,CDialog)
//{{AFX_MSG_MAP(CPersonDlg)
……
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
若改变了上述语句对,VC工具将无正确地进行消息映射!
(3)在实现文件CPersonDlg.cpp添加了一个实现函数:
voidCPersonDlg:
:
OnHide()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
}
2.在程序运行中显示或隐藏按钮
编写voidCPersonDlg:
:
OnHide()消息响应函数如下:
voidCPersonDlg:
:
OnHide()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
1boolbVisible=GetDlgItem(IDC_ADD)->IsWindowVisible();
2GetDlgItem(IDC_ADD)->
ShowWindow(bVisible==true?
SW_HIDE:
SW_SHOW);
3GetDlgItem(IDC_DELETE)->
ShowWindow(bVisible==true?
SW_HIDE:
SW_SHOW);
4GetDlgItem(IDC_RESTORE)->
ShowWindow(bVisible==true?
SW_HIDE:
SW_SHOW);
5GetDlgItem(IDC_HIDE)->
SetWindowText(bVisible==true?
"显示":
"隐藏");
}
说明:
1:
获取并保存资源符号为IDC_ADD的“添加”按钮的显示情况,
当按钮显示时返回值为true,否则为false
2—4:
当“添加”按钮显示时,则隐藏它们,否则显示它们。
5:
修改资源符号为IDC_HIDE的按钮文本。
3.编译并运行程序,看能否使按钮显示或隐藏
(二)按钮的允许与禁用
1.为“禁用”按钮增加一个单击事件处理函数
1)左键双击“禁用”按钮,此时显示”AddMemberFunction”对话框
2)单击”AddMemberFunction”对话框的“OK”按钮
此时在“Person”对话框应用程序中增加了一个名为OnDisable()
的函数如下:
voidCPersonDlg:
:
OnDisable()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
}
2.在程序运行中允许或禁用按钮
编写voidCPersonDlg:
:
OnDisable()消息响应函数如下:
voidCPersonDlg:
:
OnDisable()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
boolbState=GetDlgItem(IDC_ADD)->IsWindowEnabled();
GetDlgItem(IDC_ADD)->EnableWindow(!
bState);
GetDlgItem(IDC_DELETE)->EnableWindow(!
bState);
GetDlgItem(IDC_RESTORE)->EnableWindow(!
bState);
GetDlgItem(IDC_DISABLE)->
SetWindowText(bState==true?
"允许":
"禁用");
}
3.编译并运行程序,看能否使按钮允许或禁用
二.单选钮
在“Personality”对话框中的“性别”组框中已有了“男”、“女”两
个单选钮,现在设法使这两个单选钮正常发挥作用。
1.设定单选钮的Tab键次序
1)将同一组的若干个互斥单选钮的Tab键次序应依次相连
2)在“RadioButtonProperties”对话框中,将Tab键次序依次相连的若
干个互斥单选钮中的第一个单选钮选中“Group”复选钮如图4-2:
图4-2
注意:
其后的同组单选钮的“Group”复选钮都不应再选中
2.为单选钮设置变量
1)选择“View\ClassWizard…”菜单项,打开“MFCClassWizard”对话框
2)设置“MFCClassWizard”对话框如下:
(1)选择“MemberVaribles”选项卡
(2)在“Classname:
”下拉列表框中选择:
CPersonalityDlg
(3)单击“ControlIDs:
”列表中“男”单选钮对应的资源符号“IDC_SEX1”
(4)单击“AddVariable…”按钮
此时“MFCClassWizard”对话框关闭
同时又弹出一个“AddMemberVariable”对话框图如图4-3
图4-3
(5)设置“AddMemberVariable”对话框图:
A.MemberVariableName编辑框中输入:
m_nSex
B.在Category下拉列表框中选择:
Value
C.Variable下拉列表框中选择:
int
D.单击“OK”按钮,关闭对话框
(6)仿上,为“已婚”单选钮设置一个变量m_nMarried
3)变量m_nSex的初始化:
(1)在工作区中选择ClassView选项卡,并展开CPersonalityDlg类前
的“+”号
(2)双击类构造函数CPersonalityDlg(),找到其定义程序
(3)修改定义程序中的语句m_nSex=0;为:
CPersonalityDlg:
:
CPersonalityDlg(CWnd*pParent/*=NULL*/)
:
CDialog(CPersonalityDlg:
:
IDD,pParent)
{
//{{AFX_DATA_INIT(CPersonalityDlg)
m_nSex=0;
m_nMarried=-1;
//}}AFX_DATA_INIT
}
3.编译并运行程序
1)可见“个人资料输入”对话框中的“男”单选钮有选中标记,若点击
“女”单选钮,则“女”单选钮中显示选中标记,而“男”单选钮有
选中标记消失。
2)“婚姻情况”组合框的中两个单选钮“已婚”、“未婚”都无选中标记
其相应变量的初始化语为:
m_nMarried=-1;的缘姑,把“-1”改成“0”
即可使其在对话框图刚打开显示选取中符号。
三.复选钮
1.向对话框添加复选钮控件
“Personality”对话框中已添加了四个复选控件,添加方法在{第三讲
、六}中已介绍
2.为复选钮设置变量
方法与单选钮设置变量的方法相同,区别在于:
一组互斥单选钮只需
设置一个变量,而每个复选钮都要设置变量,四个复选钮的对应变量
名依次为:
m_bCharacter1、m_bCharacter2、m_bCharacter3
m_bCharacter4
3.变量的初始化:
(1)在工作区中选择ClassView选项卡,并展开CPersonalityDlg类前
的“+”号
(2)双击类构造函数CPersonalityDlg(),找到其定义程序
(3)修改定义程序中的语句:
此时可看到在此构造函数中,以增加了上述四个变量的初始化语句
把其中的二个语句的FALSE改成TRUE。
CPersonalityDlg:
:
CPersonalityDlg(CWnd*pParent/*=NULL*/)
:
CDialog(CPersonalityDlg:
:
IDD,pParent)
{
//{{AFX_DATA_INIT(CPersonalityDlg)
m_nSex=0;
m_nMarried=-1;
m_bCharacter1=TRUE;
m_bCharacter2=TRUE;
m_bCharacter3=FALSE;
m_bCharacter4=FALSE;
//}}AFX_DATA_INIT
}
4.编辑并运行程序
此时可看到,改成TRUE的二个复选钮有选中标记,而其它的二个则没
有选中标记。
四.编辑框
编辑框主要用来接收输入文本,在“Personality”对话框中,已经增添
了两个编辑框,这里主要介绍如何从编辑框获取输入文本。
1.修改编辑框的资源符号
1)在项目工作区选择ResourceView选项卡
2)展开项目名前的“+”号,再展开Dialog前的“+”号
3)左键双击“Personality”对话框的资源符号“IDD_PERSONALITY”
此时会显示“Personality”对话框模板
4)左键双击“姓名”右侧的编辑框,此时弹出“EditProperties”对话框:
图4-4
5)设置“EditProperties”对话框:
A.把ID:
编辑框内容改成:
IDC_NAME
B.选中“Tabstop”复选框。
6)仿上修改“出生年月”右侧的编辑框,其资源符号置为:
IDC_BIRTHDAY
2.为编辑框连接变量
1)选择“View\ClassWizard…”菜单项
此时弹出“MFCClassWizard”对话框
2)选择“MFCClassWizard”对话框中的“Membervariables”选项卡
3)在“Classname:
”下拉列表中选取择:
CPersonalityDlg
4)分别为“ControlIDs:
”栏下的IDC_NAME和IDC_BIRTHDAY添加二个名
为:
m_strName和m_strBirthday的字符串型变量如下图:
图4-5
3.获取编辑框的输入文本
1)为OK按钮增加一个消息响应函数
A.左键双击OK铵钮——此时弹出消息响
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第3讲 对话框设计 对话框 设计