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、给密码输入框添加字符串类型的变量CStringm_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; } return CDialogEx::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、测试程序运行结果,看看编辑框不同属性会呈现什么不同的效果。当记录框不够用时会自动添加滚动条。