第 17 章
个内容与IDD_DIALOG1 一样的资源。
枫叶文学网www.fywxw.com
第4 章 对话框
·63·
图4-3 对话框编辑器界面
2.修改对话框属xìng
为Sample4_1 添加新的对话框后,该对话框的属xìng都是由IDE 设置的默认值,因此第二
步应当修改对话框的属xìng。将鼠标光标移动到对话框编辑器中需要编辑的对话框上,然后单
击鼠标右键打开弹出式菜单,选择“Properties”属xìng,打开“Dialog Properties”对话框,如
图4-4 所示。
图4-4 对话框属xìng编辑对话框
对如图4-3 所示对话框的属xìng进行如下修改:
(1)修改对话框ID,在“ID”输入框中输入“IDD_LOGINDIALOG”。
(2)修改对话框标题,在“Caption”输入框中输入“登录对话框”。
(3)为了在中文系统下的美观,修改对话框字体。单击“Font”按钮,弹出“Select Dialog
Font”对话框,在“Font”列表框中选择字体为“宋体”,在“Size”列表框中设置字号为10,
单击“OK”确认退出“Select Dialog Font”对话框。
(4)修改完成后,回车确认修改并退出“Dialog Properties”对话框。
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·64·
3.在对话框中添加控件
依据实例要求,确认和取消按钮已经默认添加好了,只需要添加用户名和密码两个输入
框,并添加相应的说明。具体步骤如下:
(1)在对话框中添加一个静态文本框(Static Text)。在如图4-3 所示的客户区右侧浮动
的Control 工具栏中的“Static Text”控件按钮上单击,然后在对话框资源中按下鼠标左键拖
动,出现一个矩形框,松开鼠标左键,则在对话框资源中出现了一个“Static Text”控件。
另外,添加控件还可以利用鼠标将Control 工具栏中的控件直接拖到对话框资源中。单
击对话框资源中的控件后,控件周围会出现一个虚线框,表示当前选中该控件。在控件中央
按下鼠标左键不放可以将控件拖动到指定位置,在虚线框上按下鼠标左键不放并拖动,可以
调整控件的大小。按Delete 键可以删除当前选中的控件。通过这些cāo作将添加的“Static Text”
控件的位置和大小调整到如图4-5 中标题为“用户名:”的静态文本框控件所示位置和大小。
图4-5 在登录对话框中添加一个静态文本框
此时添加的“Static Text”控件,显示“Static”的字样。接着将鼠标移动到该控件上,
单击鼠标右键,在弹出菜单中选择“Properties”,打开控件的属xìng编辑对话框,修改标题(在
Caption 输入框中)为“用户名:”,如图4-6 所示。
图4-6 修改静态文本框的属xìng
(2)在对话框中添加输入框(Edit Box),添加过程与步骤(1)相同,但应当在Control
工具栏中选择“Edit Box”控件的图标,将该控件调整到与如图4-7 所示虚线框选中的控件一
致。
图4-7 在登录对话框中添加一个输入框
枫叶文学网www.fywxw.com
第4 章 对话框
·65·
打开控件属xìng编辑对话框,在ID 输入框中将输入框的ID 改为IDC_LOGINNAME,如
图4-8 所示。
图4-8 修改输入框的属xìng
(3)用步骤(1)的方法添加一个标题为“密码:”的静态文本框。
(4)用步骤(2)的方法添加一个ID 为IDC_PASSWORD 的输入框作为密码输入框,注
意修改输入框的属xìng为密码框。
技巧:(1)在对话框编辑界面下,可以选定一个或通过按住Ctrl 键不放用鼠标左键单击选定多个
控件,在对话框中复制并粘贴,可以添加与原来控件外观一样的新控件。
(2)输入框用作输入密码时,需要保证输入的字符不被回显在输入框中以防止密码被窃取,
这需要设置输入框属xìng为密码输入框。将鼠标移动到输入框控件上,单击鼠标左键,打开
属xìng编辑对话框,单击“Styles”选项卡,选中“Password”复选框(如图4-9 所示)。选
中此复选框后,输入框会自动将输入的字符回显为“*”。
图4-9 设置输入框的密码属xìng
(5)打开“OK”和“Cancel”按钮的属xìng编辑对话框,在“Caption”输入框中将标题分
别改为“确认”和“取消”,并调整两个按钮的位置和对话框的大小,得到如图4-10 所示的
登录对话框。
图4-10 设置好界面的登录对话框
(6)设置对话框中各种控件的响应顺序,即运行时按下Tab 键,输入焦点从一个控件切
换到另一个控件的顺序。
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·66·
在对话框编辑界面中,可以通过选择主菜单“Layout|Tab Order”或者按快捷键Ctrl+D,
进入tab 顺序的设置界面,此时对话框资源编辑器的客户区如图4-11 所示。
图4-11 设置登录对话框的响应顺序
如图4-11 所示,每个控件左上角的数字就是它的响应顺序。标明数字1 的“确认”按钮
控件表示对话框打开时输入焦点最初的位置。然后按下Tab 键,输入焦点转移到标明数字2
的“取消”按钮。再按下Tab 键,输入焦点转移到标明数字3 的“用户名:”静态文本框,由
于静态文本框不接受输入,因此输入焦点自动转移到标明数字4 的输入框。其他数字以此类
推。
设置Tab 顺序是通过按所需的顺序依次单击各个控件完成,如进入如图4-11 所示的界面
后,依次单击“用户名”输入框,“用户名”静态文本框,“密码”输入框,“密码”静态文本
框,“确认”按钮和“取消”按钮,就可设置成如图4-12 所示的程序。
最后按ESC 键,就可以确认修改并退出设置界面。
图4-12 比较合理的登录对话框的tab 顺序
技巧:调用CWinApp::SetDialogBkColor()可以改变对话框的背景颜色和文本颜色。该函数一般在
应用程序类的InitInstance 函数中调用,设置应用程序中对话框与消息对话框的默认背景颜
色和文本颜色。例如:
BOOL CMyApp::InitInstance()
{
// Standard initialization
……
//将对话框背景颜色设置为黄色(第一个参数)
//将对话框文本颜色设置为蓝色(第二个参数)
枫叶文学网www.fywxw.com
第4 章 对话框
·67·
SetDialogBkColor(RGB(255,255,0),RGB(0,0,255));
//装入标准的INI 文件设置(包括MRU)
LoadStdProfileSettings();
……
}
4.1.3 创建对话框类
创建对话框的第二步是创建对话框类,即创建一个CDialog 类的派生类与新建的对话框
资源关联。对话框类CDialog 提供了访问控件属xìng,以及响应控件和对话框自身消息的功能。
1.创建对话框类
创建与关联的对话框类的派生类的过程如下:
(1)在IDE 主菜单栏中依次选择菜单“View|ClassWizard”,或者在开发环境的界面中直
接使用快捷键Ctrl+W,打开“ClassWizard”对话框。同时系统会检测到添加了新的对话框资
源,并自动打开如图4-13 所示的对话框,提示用户是否为新建的对话框添加一个对话框类。
(2)在如图4-13 所示的对话框中,选中“Create a new class”单选项,为对话框资源创
建一个新的类,单击“OK”按钮确认后打开如图4-14 所示的“New Class”对话框。
图4-13 提示用户为新添加的对话框创建一个对话框类 图4-14 创建新类的对话框
(3)在“New Class”对话框中,为4.1.2 节中创建的实例Sample4_1 的登录对话框创建
新的类。
? 在“Ncom”输入框中输入“CLoginDialog”,表明新建类的名称为CLoginDialog。
? 此时“File ncom”输入框中的内容自动设置为“LoginDialog.cpp”,表明类的源文件为
LoginDialog.cpp。
? 在“Base class”下拉列表框中选择“CDialog”,表明CLoginDialog 类的基类为CDialog。
? 在“Dialog ID”下拉列表框中选择IDD_LOGINDIALOG,表明CLoginDialog 关联的
对话框资源为IDD_LOGINDIALOG。
? 单击“OK”按钮后,关闭New Class 对话框,返回ClassWizard 对话框,同时ClassWizard
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·68·
为登录对话框创建了一个新的类CLoginDialog。
2.为对话框类添加控件成员变量
在返回的ClassWizard 对话框中单击“Member Variables”选项卡进入如图4-15 所示的编
辑对话框控件成员变量的界面。这个界面用于设置为控件关联变量,使得在程序中通过这些
变量可以访问控件的属xìng。
介绍该界面中的主要内容如下。
? Project 下拉列表框:选择需要编辑的工程名。
? Class ncom 下拉列表框:选择需要编辑的类名。
? Control IDs 列表框:列出对话框的控件及其对应的控件成员变量信息。其中有3 列,
“Control IDs”列给出对话框的控件ID,“Type”列给出控件变量的类型,“Member”
列给出控件变量的名称。选定某个控件,还可以编辑该控件对应的变量。
? Add Class 按钮:添加新类。
? Add Variable 按钮:为选定的控件添加变量。
? Delete Variable 按钮:为选定的控件删除原来的变量。
? Update Columns 和Bind All 按钮:跟数据库有关,这里不作介绍。
图4-15 ClassWizard 编辑对话框控件成员变量的界面
在如图4-15 所示的“Project”下拉列表框中已经默认选择Sample4_1,在“Class ncom”
下拉列表框中选择CLoginDialog,从Control IDs 列表框中可以看到登录对话框中有4 个控件,
IDC_LOGINNAME、IDC_PASSWORD、IDCANCEL 和IDOK。需要获得用户输入的用户名
和密码,因此需要为IDC_LOGINNAME 和IDC_PASSWORD 添加两个变量。步
松语文学免费小说阅读_www.16sy.com
枫叶文学网www.fywxw.com
第4 章 对话框
·63·
图4-3 对话框编辑器界面
2.修改对话框属xìng
为Sample4_1 添加新的对话框后,该对话框的属xìng都是由IDE 设置的默认值,因此第二
步应当修改对话框的属xìng。将鼠标光标移动到对话框编辑器中需要编辑的对话框上,然后单
击鼠标右键打开弹出式菜单,选择“Properties”属xìng,打开“Dialog Properties”对话框,如
图4-4 所示。
图4-4 对话框属xìng编辑对话框
对如图4-3 所示对话框的属xìng进行如下修改:
(1)修改对话框ID,在“ID”输入框中输入“IDD_LOGINDIALOG”。
(2)修改对话框标题,在“Caption”输入框中输入“登录对话框”。
(3)为了在中文系统下的美观,修改对话框字体。单击“Font”按钮,弹出“Select Dialog
Font”对话框,在“Font”列表框中选择字体为“宋体”,在“Size”列表框中设置字号为10,
单击“OK”确认退出“Select Dialog Font”对话框。
(4)修改完成后,回车确认修改并退出“Dialog Properties”对话框。
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·64·
3.在对话框中添加控件
依据实例要求,确认和取消按钮已经默认添加好了,只需要添加用户名和密码两个输入
框,并添加相应的说明。具体步骤如下:
(1)在对话框中添加一个静态文本框(Static Text)。在如图4-3 所示的客户区右侧浮动
的Control 工具栏中的“Static Text”控件按钮上单击,然后在对话框资源中按下鼠标左键拖
动,出现一个矩形框,松开鼠标左键,则在对话框资源中出现了一个“Static Text”控件。
另外,添加控件还可以利用鼠标将Control 工具栏中的控件直接拖到对话框资源中。单
击对话框资源中的控件后,控件周围会出现一个虚线框,表示当前选中该控件。在控件中央
按下鼠标左键不放可以将控件拖动到指定位置,在虚线框上按下鼠标左键不放并拖动,可以
调整控件的大小。按Delete 键可以删除当前选中的控件。通过这些cāo作将添加的“Static Text”
控件的位置和大小调整到如图4-5 中标题为“用户名:”的静态文本框控件所示位置和大小。
图4-5 在登录对话框中添加一个静态文本框
此时添加的“Static Text”控件,显示“Static”的字样。接着将鼠标移动到该控件上,
单击鼠标右键,在弹出菜单中选择“Properties”,打开控件的属xìng编辑对话框,修改标题(在
Caption 输入框中)为“用户名:”,如图4-6 所示。
图4-6 修改静态文本框的属xìng
(2)在对话框中添加输入框(Edit Box),添加过程与步骤(1)相同,但应当在Control
工具栏中选择“Edit Box”控件的图标,将该控件调整到与如图4-7 所示虚线框选中的控件一
致。
图4-7 在登录对话框中添加一个输入框
枫叶文学网www.fywxw.com
第4 章 对话框
·65·
打开控件属xìng编辑对话框,在ID 输入框中将输入框的ID 改为IDC_LOGINNAME,如
图4-8 所示。
图4-8 修改输入框的属xìng
(3)用步骤(1)的方法添加一个标题为“密码:”的静态文本框。
(4)用步骤(2)的方法添加一个ID 为IDC_PASSWORD 的输入框作为密码输入框,注
意修改输入框的属xìng为密码框。
技巧:(1)在对话框编辑界面下,可以选定一个或通过按住Ctrl 键不放用鼠标左键单击选定多个
控件,在对话框中复制并粘贴,可以添加与原来控件外观一样的新控件。
(2)输入框用作输入密码时,需要保证输入的字符不被回显在输入框中以防止密码被窃取,
这需要设置输入框属xìng为密码输入框。将鼠标移动到输入框控件上,单击鼠标左键,打开
属xìng编辑对话框,单击“Styles”选项卡,选中“Password”复选框(如图4-9 所示)。选
中此复选框后,输入框会自动将输入的字符回显为“*”。
图4-9 设置输入框的密码属xìng
(5)打开“OK”和“Cancel”按钮的属xìng编辑对话框,在“Caption”输入框中将标题分
别改为“确认”和“取消”,并调整两个按钮的位置和对话框的大小,得到如图4-10 所示的
登录对话框。
图4-10 设置好界面的登录对话框
(6)设置对话框中各种控件的响应顺序,即运行时按下Tab 键,输入焦点从一个控件切
换到另一个控件的顺序。
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·66·
在对话框编辑界面中,可以通过选择主菜单“Layout|Tab Order”或者按快捷键Ctrl+D,
进入tab 顺序的设置界面,此时对话框资源编辑器的客户区如图4-11 所示。
图4-11 设置登录对话框的响应顺序
如图4-11 所示,每个控件左上角的数字就是它的响应顺序。标明数字1 的“确认”按钮
控件表示对话框打开时输入焦点最初的位置。然后按下Tab 键,输入焦点转移到标明数字2
的“取消”按钮。再按下Tab 键,输入焦点转移到标明数字3 的“用户名:”静态文本框,由
于静态文本框不接受输入,因此输入焦点自动转移到标明数字4 的输入框。其他数字以此类
推。
设置Tab 顺序是通过按所需的顺序依次单击各个控件完成,如进入如图4-11 所示的界面
后,依次单击“用户名”输入框,“用户名”静态文本框,“密码”输入框,“密码”静态文本
框,“确认”按钮和“取消”按钮,就可设置成如图4-12 所示的程序。
最后按ESC 键,就可以确认修改并退出设置界面。
图4-12 比较合理的登录对话框的tab 顺序
技巧:调用CWinApp::SetDialogBkColor()可以改变对话框的背景颜色和文本颜色。该函数一般在
应用程序类的InitInstance 函数中调用,设置应用程序中对话框与消息对话框的默认背景颜
色和文本颜色。例如:
BOOL CMyApp::InitInstance()
{
// Standard initialization
……
//将对话框背景颜色设置为黄色(第一个参数)
//将对话框文本颜色设置为蓝色(第二个参数)
枫叶文学网www.fywxw.com
第4 章 对话框
·67·
SetDialogBkColor(RGB(255,255,0),RGB(0,0,255));
//装入标准的INI 文件设置(包括MRU)
LoadStdProfileSettings();
……
}
4.1.3 创建对话框类
创建对话框的第二步是创建对话框类,即创建一个CDialog 类的派生类与新建的对话框
资源关联。对话框类CDialog 提供了访问控件属xìng,以及响应控件和对话框自身消息的功能。
1.创建对话框类
创建与关联的对话框类的派生类的过程如下:
(1)在IDE 主菜单栏中依次选择菜单“View|ClassWizard”,或者在开发环境的界面中直
接使用快捷键Ctrl+W,打开“ClassWizard”对话框。同时系统会检测到添加了新的对话框资
源,并自动打开如图4-13 所示的对话框,提示用户是否为新建的对话框添加一个对话框类。
(2)在如图4-13 所示的对话框中,选中“Create a new class”单选项,为对话框资源创
建一个新的类,单击“OK”按钮确认后打开如图4-14 所示的“New Class”对话框。
图4-13 提示用户为新添加的对话框创建一个对话框类 图4-14 创建新类的对话框
(3)在“New Class”对话框中,为4.1.2 节中创建的实例Sample4_1 的登录对话框创建
新的类。
? 在“Ncom”输入框中输入“CLoginDialog”,表明新建类的名称为CLoginDialog。
? 此时“File ncom”输入框中的内容自动设置为“LoginDialog.cpp”,表明类的源文件为
LoginDialog.cpp。
? 在“Base class”下拉列表框中选择“CDialog”,表明CLoginDialog 类的基类为CDialog。
? 在“Dialog ID”下拉列表框中选择IDD_LOGINDIALOG,表明CLoginDialog 关联的
对话框资源为IDD_LOGINDIALOG。
? 单击“OK”按钮后,关闭New Class 对话框,返回ClassWizard 对话框,同时ClassWizard
枫叶文学网www.fywxw.com
Visual C++ 6.0 程序设计从入门到精通
·68·
为登录对话框创建了一个新的类CLoginDialog。
2.为对话框类添加控件成员变量
在返回的ClassWizard 对话框中单击“Member Variables”选项卡进入如图4-15 所示的编
辑对话框控件成员变量的界面。这个界面用于设置为控件关联变量,使得在程序中通过这些
变量可以访问控件的属xìng。
介绍该界面中的主要内容如下。
? Project 下拉列表框:选择需要编辑的工程名。
? Class ncom 下拉列表框:选择需要编辑的类名。
? Control IDs 列表框:列出对话框的控件及其对应的控件成员变量信息。其中有3 列,
“Control IDs”列给出对话框的控件ID,“Type”列给出控件变量的类型,“Member”
列给出控件变量的名称。选定某个控件,还可以编辑该控件对应的变量。
? Add Class 按钮:添加新类。
? Add Variable 按钮:为选定的控件添加变量。
? Delete Variable 按钮:为选定的控件删除原来的变量。
? Update Columns 和Bind All 按钮:跟数据库有关,这里不作介绍。
图4-15 ClassWizard 编辑对话框控件成员变量的界面
在如图4-15 所示的“Project”下拉列表框中已经默认选择Sample4_1,在“Class ncom”
下拉列表框中选择CLoginDialog,从Control IDs 列表框中可以看到登录对话框中有4 个控件,
IDC_LOGINNAME、IDC_PASSWORD、IDCANCEL 和IDOK。需要获得用户输入的用户名
和密码,因此需要为IDC_LOGINNAME 和IDC_PASSWORD 添加两个变量。步
松语文学免费小说阅读_www.16sy.com