已经知道updateDate(false)跟true的用法现在就是在用TRUE更新的时候有必要加判断么?UpdateData(true);//从edit中读取数据
if(!UpdateData()) 
{
MessageBox("请输入一个0-999的整数!");

}
如果用这个判断的话,我把edit手动清空的情况下,得弹出三次对话框这个if判断前一句去掉是不是效果是一样的啊?

解决方案 »

  1.   

    你这是什么代码啊?哪有这么用UpdateData的?你是想实现一个只认整数的文本框?你应该直接去检查CEdit对应的变量啊。一般来说用户输入的时候判断只能限制是不是字母或数字(通过KEYPRESS事件之类的),如果想有范围限定,建议你在对话框的OK按钮的WM_COMMAND事件里做处理,那里UpdateData(TRUE),然后判断变量是否合法。
      

  2.   

    首先,你这个判断是不需要的,因为你可以直接在RC界面调整控件的属性,当输入不是你设定的范围,那么UpdateData会自动蹦出来但是问题来了,这个蹦出来的对话框,不好看,大部分应用程序,只要带了自己绘制效果的,它这个蹦出来的消息框,就很丑陋了因此,当用户对界面没有要求的时候,可以在RC里面设置限制
    但是,我更推荐不要在RC中作任何数据限制,由自己采集数据,然后自己判断数据的合法性,这样子,效果很好控制,合法性规则也可以定义的更丰富
      

  3.   

    你加这个判断的目的是什么呢?如果是想判断一下EDIT中有没有输入,也不能用if(!UpdateData()) 啊,也应该是用if(m_strEdit.IsEmpty())....
    这里假定m_strEdit是和EDIT关联的CString变量。
      

  4.   

    UpdateData(true);//从edit中读取数据    
        if(!UpdateData()) 
        {
            MessageBox("请输入一个0-999的整数!");
        
        }
    ------------------------------------------
    UpdateData()函数调用两次,默认参数是TRUE。