2.1 静态文本、文本框和按钮使用实例

静态文本、文本框和按钮是软件界面中最常见的控件,静态文本主要用来在界面上显示一些提示性的文字,在程序运行过程中一般不需要修改其内容,它也很少接受用户输入。文本框用来接受用户输入的文本内容。按钮控件用来接受用户的指令。

2.1.1 技术要点:

  • 静态文本的内容在设计期就可确定,但如果要在运行时动态修改其内容,就必须把IDE生成的默认控件ID改成有意义的唯一ID。Group Box 和 Picture 控件也可看作静态文本,只是绘制方式不同。Windows 中预先定义了一系列以“STM_ ”开头的专用消息,用于控制静态文本控件。例如向控件发送 STM_ GETICON 消息,可以获取一个具有SS_ ICON 风格的控件中当前显示的图标句柄;
  • 静态文本控件有一些特殊的窗口风格,这些风格均以“SS_ ”开头,不同的风格会使控件呈现出不同外观。例如当控件具有SS_ NOTIFY 风格时,控件将能接受鼠标输入;
  • 静态文本控件中有事件发生时,将向其父窗口通过 WM_ COMMAND 消息发出预先定义的以“STN_ ”开头的通知消息。例如 STN_ CLICKED 代表用户单击了控件;
  • MFC对静态文本的封装为 CStatic 类;
  • 和静态文本控件类似,文本框控件也有一系列专用控制消息,这些消息类似于 EM_ XXX 。文本框控件的专用窗口风格类似于 ES_ XXX 。文本框的事件通知消息类似于 EN_ XXX 。MFC 对文本框的封装为 CEdit 类;
  • 用于控制按钮的消息定义均以“BM_ ”开头,按钮风格定义均以“BS_ ”开头,按钮的事件通知消息均以“BN_ ”开头。MFC 对按钮控件的封装为 CButton 类;
  • 在对话框中,这3种控件都可以用 API 函数 SetDlgItemText来设置其显示文本,都可以通过 API 函数 GetDlgItemText 来获取其文本;

···

2.1.2 实例步骤:
本实例通过一个统计文本框中字符串长度和字符个数的程序,演示上述3种控件的基本用法。实例步骤如下:

  1. 在 Visual C++ 6.0 中新建一个基于对话框的 MFC 应用程序,项目名称为“EditDemo”;这里写图片描述这里写图片描述
  2. 通过资源编辑器打开主对话框,删除主对话框上 IDE 自动生成的控件;这里写图片描述这里写图片描述
  3. 通过工具箱,向主对话框上添加一个静态文本控件,在控件上单击鼠标右键打开“Properties”菜单。在弹出的属性编辑界面中,选择“General”选项卡,将控件的“Caption”属性修改为“在文本框中输入文本,可统计字符数:”;这里写图片描述
  4. 向主对话框中添加一个文本框控件。在控件上单击鼠标右键打开“Properties”菜单,打开控件的属性编辑界面。在“General”属性页中,将控件的ID属性修改为“IDC_ EDT_ INPUT”,在“Styles”属性页中,选中控件的“Multiline”、“Horizontal scroll”和“Vertical scroll”风格。这三种风格将使控件支持多行文本输入,并具有水平和垂直滚动条;这里写图片描述这里写图片描述
  5. 向主对话框上添加一个按钮控件,将其ID属性修改为“IDC_ BTN_ COUNT”,“Caption”属性修改为“统计”;这里写图片描述
  6. 向主对话框中添加一个静态文本空间,将控件的ID属性修改为“IDC_ OUTPUT”,“Caption”属性清空;这里写图片描述
  7. 在主对话框上单击鼠标右键,在弹出的菜单中选择“ClassWizard”,打开 Visual C++ 6.0 的类向导。在“Object IDs”列表框中选择按钮控件“IDC_ BTN_ COUNT”,在“Messages”列表框中选择“BN_ CLICKED”消息,单击“Add Function”按钮,在弹出的对话框中单击“OK”按钮后,即可在主对话框类中添加该按钮的单击事件响应函数。添加函数后的类向导界面如下;这里写图片描述这里写图片描述
  8. 单击类向导界面上的“Edit Code”按钮,进入代码编辑器。将新添加的函数内容修改为如下所示;
//“统计”按钮的单击事件响应函数
void CEditDemoDlg::OnBtnCount() 
{
    CString strInput;
    //取得输入文本框中的内容
    GetDlgItemText(IDC_EDT_INPUT, strInput);
    //获取字符串长度
    int nLen = strInput.GetLength();
    int nCount = 0;
    //循环计算字符个数
    for(int i=0; i<nLen; i++)
    {
        if((BYTE)strInput[i] > 0x7F)
        {
            i++;
        }
        nCount ++;
    }
    //输出结果到界面上
    CString strOutput;
    strOutput.Format(_T("字符串长度:%d,字符个数:%d。"), nLen, nCount);
    SetDlgItemText(IDC_OUTPUT, strOutput);
}

2.1.3 程序运行:

代码输入完毕后,按F5键,即可运行程序。在程序界面上的文本框中输入一些文本,单击“统计”按钮,所输入的字符串的长度和其中的字符个数会显示出来;这里写图片描述

2.1.4 源程序解读:

  • 由于控件本身也是窗体,支持窗体的所有消息和特性,再加上控件新增的消息和特性,使得控件的完全使用方法不能用较短篇幅描述清楚。本章所演示的只是控件的最基本使用方法;
  • 本实例中界面上共有两个静态文本控件,其中一个使用了默认的“ID_ STATIC”,使用默认ID的静态文本控件,一般用于显示固定不变的文本信息,如果要在程序中修改控件的文本,需要为控件指定一个专用的ID;
  • 本例中,对控件属性的修改步骤做了详细描述,在后续章节中,不再敖述;
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值