第二章按钮、编辑框和复选框
本章将通过一个实例程序介绍按钮、编辑框和复选框这三个控件的设计和使用技巧。控件设计的一般过程是用可视化操作在对话框中加入控件,设置属性,编译连接并观看效果、为控件定义变量和编写代码。如果使用控件较多,可以事先编一个控件属性表,参考表中信息设计,这样可以提高工作效率,减少设计错误和帮助纠错。下面我们先设计和运行例程,然后总结一般方法。
本章要点
编辑框的设计和使用
用按钮和复选框来控制
调用外部的可执行程序
2.1 例程Test.exe的界面和功能
Test.exe的界面如图Chap2-01所示。
图chap02-1
本例程的功能如下:上方的静态文本框用于显示信息。下面的编辑框用于输入字符串,两个复选框用来控制编辑框的状态,左边的“不选”就会隐藏,左边的“不选”就会就使它不激活,不能输入了。按下[测试]按钮会在编辑框中显示一段预先设置的文字,按下[清除]按钮则清除编辑框中的文字。当编辑框内按上面的提示输入字符串后,就会执行相应的程序(其它字符串则无反应)。
2.2 创建工程和设计界面
一 创建工程
位置 =D:\VC60\CH02\;程序名=Test
Step1 应答:对话框模式
Step2 应答:默认
Step3 应答:MFC标准和静态库连接
Step4 应答:默认
二 设计界面
按下列的属性表设计
控件 | 标题 | ID | 属性 | 扩展 |
静态文本 | (见图 ch02-1) | IDC-STATIC | ||
编辑框 | IDC_TEST_EDIT | |||
复选框 | 显示编辑框 | IDC_VISIBLE_CHECK | ||
复选框 | 编辑框可输入 | IDC_ENABLED_CHECK | ||
按钮 | 测试 | IDC_TEST_BUTTON | 可显示,TAB | Client,Static,Modal(√) |
按钮 | 清除 | IDC_CLEAR_BUTTON | 可显示,TAB | Client,Static,Modal(√) |
按钮 | EXIT | IDC_EXIT_BUTTON | 可显示,TAB | Client,Static,Modal(√) |
组框 | Test | IDC_TEST_GROUP | ||
对话框 | Test程序 | IDC_TEST_DIALOG |
设计好的界面如图chap02-2:
图chap02-2
三 添加变量和事件
下一步是设置变量和添加事件,编辑框中输入的内容程序中要使用,所以需要设置字符串型变量,输入后将调用函数去执行外部程序,因此需要添加EN_CHANGE。打开“类向导”的“的添加变量页”,选择编辑框的ID,点击"Add...",输入变量名=m_Test_Edit ,类型=String。再回到“消息映射”页,选中编辑框的ID,选择事件EN_CHANGE,点击"Add Function",就生成了OnChangeTestEdit()函数,点击"Edit code"就可以立即输入代码。
现在我们不输入代码,先设置其他的变量和事件。按下表设置两个复选框的变量,用Bool型来表示复选框是否被选中。如是“是”,BN_CLICKED事件的代码是“设置编辑框的显示属性为是”,否则编辑框不可显示。同样地,添加IDC_ENABLED_CHECK的变量和事件,代码的功能是“当m_Enavbled_Check == TRUE 时设置编辑框的激活属性”。
要添加的变量和事件函数表 | ||||
控件 | 标题 | ID | 添加变量 | 添加事件 |
编辑框 | IDC_TEST_EDIT | String m_Test_Edit | EN_CHANGE | |
复选框 | 显示编辑框 | IDC_VISIBLE_CHECK | Bool m_Visible_Check | BN_CLICKED |
复选框 | 编辑框可输入 | IDC_ENABLED_CHECK | Bool m_Enavbled_Check | BN_CLICKED |
2.3 编写代码
1 初始化对话框
在OnInitDialog()函数中置两个复选框变量的值为真TRUE。代码如下:
使对话框不能更新。
2 两复选框的“点击”事件
点击“显示编辑框”将改变m_Visible_Check的真假之值,根据这个值设置编辑框为可见活不可见,代码如下:
void CTestDlg::OnVisibleCheck()
{
}
“显示编辑框”复选框的代码如下:
void CTestDlg::OnEnabledCheck()
{
}
操作时函数体是自动生成的,你只要输入TODO后面的代码。
代码的含义:
函数GetDlgItem(ID)的功能是返回ID所对应的控件对象,->ShowWindow(常量)则显示或隐藏该控件,常量SW_SHOW和SW_HIDE必须大写。所以
表示“隐藏编辑框”。
函数EnableWindow(TRUE)的功能是“激活编辑框”。
3 编辑框添加EN_CHANGE事件及其代码
因为编辑框在输入某些字符串后,就会执行相应的程序。为实现这一功能,需要添加EN_CHANGE事件。在类向导的消息映射页上,选定该编辑框的ID,在右边的列表框中选EN_CHANGE事件。按添加函数后生成OnChangeTestEdit();点击"Add code"立即输入代码。
图chap02-3
执行外部程序可用函数system(程序名),所以根据编辑框变量m_TestEdit的值选择要执行的程序。代码如下:
4 添加三个按钮的代码
前两个按钮的功能是重新设置编辑框变量的值,其代码是:
测试:
清除:
EXIT:
至此,控件和代码都设计完毕,“保存全部”后再“重建全部”,就生成可执行文件好运行了。
2.4 小结
本章学习了按钮、编辑框和复选框三类控件。设置控件属性用右键点击控件。
在按钮的设置中,属性页1设置ID和标题,另外“显示”和“TAB”两个选项按默认被选中。属性页2-Styles无须设置,属性页3-Extended styles设置按钮的外观,对EXIT按钮选中Client,Static,Modal这三项,其他两个默认全不选。
![]() |
![]() |
![]() |
编辑框没有标题,在一般页上设置ID和是否显示是否激活,在Styles页上选择是单行还是多行文本。Extended styles页和按钮的一样设置外观。
![]() |
![]() |
复选框除了ID和标题外没有要设置的。
在本章中,我们还学到如何用按钮和复选框来控制编辑框的方法,利用GetDlgItem(ID)函数得到控件对象的方法,还有用 system("*.exe")执行外部程序的方法。
——END——