EditBox绑定m_sub(定义为CString) char *pubnum;
pubnum=new char[_pub_num];
memset(pubnum,0,_pub_num);
strcpy(pubnum,m_sub);//保存之前的值
UpdateData(true);
if((atoi(m_sub)>255)||(atoi(m_sub)<0))
{
m_sub=pubnum;  //还原原来的值
MessageBox("你必须输入0-255之间的数值!","出错",MB_ICONERROR);
}
UpdateData(false);
delete pubnum;
请问为什么输入大于255的值如:2551 之后,弹出警告,却没有更新EDitBox的值,连m_sub的值都仍然是2551 ??怎么解决,谢谢

解决方案 »

  1.   

    没你所叙的问题啊,不过你代码写的有其他问题:
    char *pubnum;
    pubnum=new char[_pub_num];
    memset(pubnum,0,_pub_num*sizeof(char));
    strcpy(pubnum,m_sub);//保存之前的值
    UpdateData(TRUE);
    if((atoi(m_sub)>255)||(atoi(m_sub)<0))
    {
    m_sub=pubnum;  //还原原来的值
    MessageBox("你必须输入0-255之间的数值!","出错",MB_ICONERROR);
    }
    UpdateData(FALSE);
    delete []pubnum;
      

  2.   

    不过你这样写不是更简单点么:
    CString strOld = m_sub;//保存之前的值
    UpdateData(TRUE);
    if((atoi(m_sub)>255)||(atoi(m_sub)<0))
    {
    m_sub=strOld;  //还原原来的值
    MessageBox("你必须输入0-255之间的数值!","出错",MB_ICONERROR);
    }
    UpdateData(FALSE);
      

  3.   

    对啊,
    把UpdateData(FALSE);再放到if里面去
      

  4.   

    可是真的有这个问题啊其他的editbox控件也是这样的情况。。不知道是不是和其他的EDitbox控件的updatedata冲突真晕
      

  5.   

    UpdateData();是会让对话框所有的EDitbox控件进行数据交互,
    你换个方式,关联Contol变量CEdit m_edit1;
    用GetWindowText/SetWindowText来访问,看看?