EDIT 控件

VS2013/MFC基于对话框编程:[11]编辑框

 

 

编辑框(Edit Control)作为对话框中常用的控件之一,常用来输入文本或者显示文本,比如用户名和密码的输入,当前数据的显示等等都少不了编辑框。其实win7自带的记事本就是一个编辑框,这里我将介绍编辑框的一些常用用法。

工具/原料

·        Visual Studio 2013

方法/步骤

1.    从工具箱中找到编辑框(Edit Control),拖动到对话框中,按图所示放置多个编辑框和一个按钮,用于说明编辑框的不同作用。

应用程序的功能:起初计算按钮不可用,需要输入正确密码,按回车确认,状态框提示密码正确与否,密码正确后启用按钮;

输入两个加数,点击按钮计算两数之和并在编辑框中显示结果,同时在记录框中显示计算记录。

2.    首先选中任意一个编辑框,看看编辑框都有哪些属性,其中常用到属性有:

Multiline:多行,表示内容可以多行显示,一般记录性的编辑框需要多行;

Password:密码,表示文本以密码形式呈现,一般用来输出密码;

Read only:只读,表示文本内容只能读不能写;

Number:数字,表示只能输入数字;

Lowercase:小写,所有字母全部自动转换为小写显示;

Uppercase:大写,所有字母全部自动转换为大写显示;

Horizontal scroll:水平滚动条,需要先选中Multiline属性;

Vertical scroll:垂直滚动条,需要先选中Multiline属性;

3.    根据不同编辑框需要实现的功能不一样,分别修改编辑框的各个属性:

1、两个加值编辑框修改Number一个为真、一个为假;

2、密码输入框修改Password为真;

3、数据之和显示框修改Read only为真;

4、状态提示框修改Read only为真,Uppercase为真;

5、记录编辑框修改Read only为真,Multiline为真,Vertical scroll为真;

4.    修改各个控件的ID分别为IDC_Add1、IDC_Add2、IDC_Result、IDC_Record、IDC_Password、IDC_Status,按钮ID为IDC_CALC;从resource文件中可以查看控件ID的定义。

双击按钮生成按钮按下事件处理函数。

5.    通过类向导为各个控件添加变量:

1、给两个加数以及加数之和添加double型的变量m_add1,m_add2,m_result;

2、给记录框添加控件类型的CEdit m_record

3、给密码输入框添加字符串类型的变量CString m_passWord

4、状态框不添加变量,以便讲述如何通过ID直接访问控件。

6.    修改初始化函数OnInitDialog,添加语句:

m_record.SetWindowTextW(_T("请输入密码!\n"));

GetDlgItem(IDC_CALC)->EnableWindow(false);

这样就设置了提示语句,并将计算按钮设置为不可用,GetDlgItem函数通过ID获取控件,这样就不必添加控件变量。

7.    类向导,添加虚函数PreTranslateMessage

8.    修改虚函数:

BOOL CDemoDlg::PreTranslateMessage(MSG*pMsg)

{

// TODO:  在此添加专用代码和/或调用基类

switch (pMsg->wParam)

{

case VK_RETURN:

UpdateData(true);

if ( m_passWord==_T("litr123"))

{

GetDlgItem(IDC_CALC)->EnableWindow(true);

GetDlgItem(IDC_Status)->SetWindowTextW(_T("success"));

}

else

{

GetDlgItem(IDC_Status)->SetWindowTextW(_T("ERROR"));

}

case VK_ESCAPE:

return true; break;

}

returnCDialogEx::PreTranslateMessage(pMsg);

}

函数功能:一来可以防止按下回车或者ESC按键时退出程序,二来可以判断密码是否正确并更新状态内容。

9.    接下来修改按钮按下事件处理函数,实现两数相加并更新记录列表。

void CDemoDlg::OnBnClickedCalc()

{

// TODO:  在此添加控件通知处理程序代码

UpdateData(true);         //获取数据

m_result = m_add1 + m_add2;

UpdateData(false);        //更新数据

CString str;

str.Format(_T("%g %s %g %s%g"), m_add1, _T("+"), m_add2, _T("="), m_result);                      //数据显示格式

str += _T("\r\n");           //回车换行

int lastLine =m_record.LineIndex(m_record.GetLineCount() - 1);

m_record.SetSel(lastLine + 1, lastLine +2, 0);   

m_record.ReplaceSel(str);  //在最后一行添加新的内容

}

10. 测试程序运行结果,看看编辑框不同属性会呈现什么不同的效果。

当记录框不够用时会自动添加滚动条。

END

注意事项

·        注意获取数据和更新数据时需要采用UpdateData函数

·        滚动条的加入需要配合Multiline属性

 

http://jingyan.baidu.com/article/76a7e409b3cb3bfc3b6e15e6.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值