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

2025-10-21 13:46:27

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

GetDlgItem(IDC_CALC)->EnableWindow(false);

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

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

7、类向导,添加虚函数PreTranslateMessage。

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

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;

}

return CDialogEx::PreTranslateMessage(pMsg);

}

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

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

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);  // 在最后一行添加新的内容

}

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

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

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

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

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

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

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢