VC++60 第二章 按钮、编辑框和复选框

来源:互联网 发布:邪器 知乐封面原画 编辑:程序博客网 时间:2024/05/19 03:20

第二章按钮、编辑框和复选框

 

本章将通过一个实例程序介绍按钮、编辑框和复选框这三个控件的设计和使用技巧。控件设计的一般过程是用可视化操作在对话框中加入控件,设置属性,编译连接并观看效果、为控件定义变量和编写代码。如果使用控件较多,可以事先编一个控件属性表,参考表中信息设计,这样可以提高工作效率,减少设计错误和帮助纠错。下面我们先设计和运行例程,然后总结一般方法。

 

本章要点

编辑框的设计和使用
用按钮和复选框来控制
调用外部的可执行程序

 

2.1 例程Test.exe的界面和功能

Test.exe的界面如图Chap2-01所示。

VC++60 <wbr>第二章 <wbr>按钮、编辑框和复选框

图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可显示,TABClient,Static,Modal(√)按钮清除IDC_CLEAR_BUTTON可显示,TABClient,Static,Modal(√)按钮EXITIDC_EXIT_BUTTON可显示,TABClient,Static,Modal(√)组框TestIDC_TEST_GROUP  对话框Test程序IDC_TEST_DIALOG  

 

设计好的界面如图chap02-2:

VC++60 <wbr>第二章 <wbr>按钮、编辑框和复选框

图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_EDITString m_Test_EditEN_CHANGE复选框显示编辑框IDC_VISIBLE_CHECKBool m_Visible_CheckBN_CLICKED复选框编辑框可输入IDC_ENABLED_CHECKBool m_Enavbled_CheckBN_CLICKED

 

2.3 编写代码

1 初始化对话框
在OnInitDialog()函数中置两个复选框变量的值为真TRUE。代码如下:
    m_Visible_Check = TRUE;
    m_Enavbled_Check= TRUE;
    UpdateData(FALSE);
使对话框不能更新。

2 两复选框的“点击”事件
点击“显示编辑框”将改变m_Visible_Check的真假之值,根据这个值设置编辑框为可见活不可见,代码如下:
void CTestDlg::OnVisibleCheck()
{
    // TODO: Add your control notification handler code here
    UpdateData(TRUE);
    if(m_Visible_Check == TRUE)
        GetDlgItem(IDC_TEST_EDIT)->ShowWindow(SW_SHOW);
    else
        GetDlgItem(IDC_TEST_EDIT)->ShowWindow(SW_HIDE);
}

“显示编辑框”复选框的代码如下:
void CTestDlg::OnEnabledCheck()
{
    // TODO: Add your control notification handler code here
    UpdateData(TRUE);
    if(m_Enabled_Check == TRUE)
        GetDlgItem(IDC_TEST_EDIT)->EnableWindow(TRUE);
    else
        GetDlgItem(IDC_TEST_EDIT)->EnableWindow(FALSE);
   
}

操作时函数体是自动生成的,你只要输入TODO后面的代码。
代码的含义:
函数GetDlgItem(ID)的功能是返回ID所对应的控件对象,->ShowWindow(常量)则显示或隐藏该控件,常量SW_SHOW和SW_HIDE必须大写。所以
        GetDlgItem(IDC_TEST_EDIT)->ShowWindow(SW_HIDE);
表示“隐藏编辑框”。
函数EnableWindow(TRUE)的功能是“激活编辑框”。

3 编辑框添加EN_CHANGE事件及其代码
因为编辑框在输入某些字符串后,就会执行相应的程序。为实现这一功能,需要添加EN_CHANGE事件。在类向导的消息映射页上,选定该编辑框的ID,在右边的列表框中选EN_CHANGE事件。按添加函数后生成OnChangeTestEdit();点击"Add code"立即输入代码。

VC++60 <wbr>第二章 <wbr>按钮、编辑框和复选框

图chap02-3 

执行外部程序可用函数system(程序名),所以根据编辑框变量m_TestEdit的值选择要执行的程序。代码如下:

    UpdateData(TRUE);       //允许更新,变量的值会改变
    CString UpperValue;
    UpperValue = m_Test_Edit;
    UpperValue.MakeUpper(); //大写化

    if(UpperValue == "MSPAINT")
    {   
        system("Mspaint.exe"); //执行画图程序
        m_TestEdit = "";
        UpdateData(FALSE);
    }
    if(UpperValue == "CALC")
    {   
        system("calc.exe");     //计算器程序
        m_TestEdit = "";
        UpdateData(FALSE);
    }
    if(UpperValue == "NOTEPAD")
    {   
        system("Notepad.exe");  //记事本程序
        m_Test_Edit = "";
        UpdateData(FALSE);
    }

4 添加三个按钮的代码
前两个按钮的功能是重新设置编辑框变量的值,其代码是:

测试:
    m_Test_Edit = "测试!在文本框中显示信息";
    UpdateData(FALSE);
清除:
    m_Test_Edit = "";
    UpdateData(FALSE);
EXIT:
    OnOK();

至此,控件和代码都设计完毕,“保存全部”后再“重建全部”,就生成可执行文件好运行了。

 

2.4 小结

本章学习了按钮、编辑框和复选框三类控件。设置控件属性用右键点击控件。
在按钮的设置中,属性页1设置ID和标题,另外“显示”和“TAB”两个选项按默认被选中。属性页2-Styles无须设置,属性页3-Extended styles设置按钮的外观,对EXIT按钮选中Client,Static,Modal这三项,其他两个默认全不选。

VC++60 <wbr>第二章 <wbr>按钮、编辑框和复选框VC++60 <wbr>第二章 <wbr>按钮、编辑框和复选框VC++60 <wbr>第二章 <wbr>按钮、编辑框和复选框

编辑框没有标题,在一般页上设置ID和是否显示是否激活,在Styles页上选择是单行还是多行文本。Extended styles页和按钮的一样设置外观。

VC++60 <wbr>第二章 <wbr>按钮、编辑框和复选框VC++60 <wbr>第二章 <wbr>按钮、编辑框和复选框

复选框除了ID和标题外没有要设置的。

在本章中,我们还学到如何用按钮和复选框来控制编辑框的方法,利用GetDlgItem(ID)函数得到控件对象的方法,还有用 system("*.exe")执行外部程序的方法。

——END——

0 0