EDIT控件添加MessageMap:EN_CHANGE,在每次键入一个字符的时候判断字符串是否有效,有效则使OK button enable

解决方案 »

  1.   

    我的意见是在Onok里判断,如果不合法,那么直接返回,不让他执行基类的onok这样要好维护一点
      

  2.   

    我用的都是Searph的方法,这样可能也要好些。还有一种方法就是从CEdi派生t,非法字符都不让他有机会输进去,这样人机界面更好些,而且只需要重载ON_KEYDOWN的处理函数,很简单。
      

  3.   

    截KILL_FOCUS也可以,不过要小心不要搞得CANCEL不了咯
      

  4.   

    在执行 CDialog::OnOK()时会自动判断数据是否有效!
    可否直接进入OnOK()修改?变量是否为int 和 date型的函数是什么?
      

  5.   

    EDIT控件添加MessageMap:EN_CHANGE  UpdateData();
      

  6.   

    EDIT控件添加MessageMap:EN_CHANGE  UpdateData();
      

  7.   

    AntGhazi方面不错,能解决你的问题。
      

  8.   

    我觉得这样处理不好,你可以重载OnOk函数,然后在进入后使用如下代码进行判断:
    可以通过classwizard来对每一个edit或其它控件生成一个对应的变量.
    CDialog::OnOk()
    {
      UpdateDate();
      if  (m_edit1 <2000)
      {
        提示为无郊数据
        让用户选择继续还是退出
    }
      else 
    {
      合法数据添加到数据库中
    }
    }
      

  9.   

    不好意思,我下山摘桃子喽~~:
    1 从CEdit派生类并且重载OnChar等;
    2 重载OnOK
    3 处理EN_CHANGE;
    结合起来使用应该可以了。如果EDIT很多,要求又差不多,我倾向于方法1,2结合。
    int isdigit(int ch);判断ch是否数字(0~9)