MFC编辑框设置,输入、输出数据最多保留5位小数

来源:互联网 发布:苹果bt下载软件 编辑:程序博客网 时间:2024/05/21 10:17

       1.获取文本改变(输入更多字符时)的消息时,获取输入的内容,判断小数点后位数(笨办法是查找小数点位置),如果超出要求,就通过sprintf使用%.5f这样的办法,把输入的数字改为符合需求的格式,然后更新编辑框里面的文本。


      2.双击Edit控件,添加消息处理函数,将上面这段代码放在里面.

可以这样(Unicode版本)CString strText, strTemp;// 为edit控件绑定变量m_EditText//获取控件的内容m_EditText.GetWindowText(strText);//定位小数点int nPos = strText.Find(_T('.')); if(n != -1){    //获取小数点后面的数据     strTemp = strText.Mid(n+1);    //如果长度大于5,则忽略后面的数据    if(strTemp.GetLength() > 5)   {       strText.Format(_T("%.5f"), _tstof(strText.GetBuffer()));       strText.ReleaseBuffer();       m_EditText.SetWindowText(strText);   }} 
---------------------------------------------------------------------------------------------------------------------------------------

这涉及2种作法
1、直接有接收框的事件处理中进行输入限制,当输入长度超过时禁止再输入。此法的缺点的编程较复杂,必须处理好各个输入事件。
2、在输入结束离开接收框时处理,即后处理。此法优点是处理简单。  

------------------------------------------------------------------------------------------------------------------------------------------------


    我是这样想的:给编辑框设置一个成员变量m_aa,再定义一个CString str,通过str.Format()来实现格式化输出,在编辑框失去焦点时触发事件。代码是这样的:
void CCurve_testDlg::OnKillfocusEdit1()
{
// TODO: Add your control notification handler code here

UpdateData(TRUE);
float naa; //编辑框输入值
CString str; //定义一个字符串型变量

naa=m_aa;
str.Format(_T("%.5f"),naa); //格式化输出,%.5f是指保留小数点后5位小数
m_aa=atof(str); //将转化后的值显示在编辑框上

UpdateData(FALSE);
}

可是在使用的时候遇到了问题,界面上有三个编辑框(m_aa,m_bb,m_cc),对每个编辑框采取以上处理,只有第一个编辑框实现了小数点后保留5位小数,而其他两个编辑框都无法实现(第二个编辑框小数点后保留了4位小数,第三个保留了3个小数,这样递减)。我不知道这是什么原因。。。

-------------------------------------------------------------------------------------------------------------------------------

     这个是我按照你的思路写出来,基本没有区别,也实现了你想要的功能

UpdateData(TRUE);
float naa = m_aa;
CString str;
str.Format(_T("%.5f"), naa);
m_aa = _tstof(str.GetBuffer());
str.ReleaseBuffer();
UpdateData(FALSE);
你可以检查一下三个控件变量,看看有什么问题没有,比如设置断点看看,是否获取到了你输入的值,而这个值又是在哪里被改写了。

----------------------------------------------------------------------------------------------------------------------


编写一个EDIT类,里面加判断,你这样写的话有很多BUG,比如可用输入字母、输入多个小数点、输入多个符号,还有中文等等。

0 0
原创粉丝点击