一、有两个编辑框,在第一个输入数据后,结束输入后把焦点移到另外一个编辑框的(一般习惯是按下enter键,但是还有用鼠标点击其他地方让原来的编辑框失去焦点啊)同时要对原来编辑框中的数据要做出判断(比如不能超过一定范围,只能是数字什么的)的函数是什么? 
二、我添加一个float型的编辑框的成员变量,在编辑框中输入非法字符字母什么的,按下enter键它就弹出一个对话框报错(请键入一个数),怎么重载那个消息响应函数把它的报错改成(请输入0~99之间的数或者其他)呢?
三、(接二)如果能实时响应最好,按下字母就会提示要输入数字(在状态栏里面提示),用什么函数去做呢?
各位哥哥姐姐弟弟妹妹帮帮忙啦,嘿嘿!VC对话框编辑框

解决方案 »

  1.   

    1. 2 EN_KILLFOUCS通知
    3. EN_UPDATE、EN_CHANGE
      

  2.   

    本帖最后由 VisualEleven 于 2013-08-21 15:31:10 编辑
      

  3.   

    这是我写的关于编辑框部分代码
    void CTest1Dlg::OnOK() //响应enter键改变编辑框焦点
    {
       GetNextDlgTabItem(GetFocus())->SetFocus();
    }void CTest1Dlg::OnKillfocusEdit1() 
    {
    // TODO: Add your control notification handler code here
    CString str;
    m_edit1.GetWindowText(str);
    float n = atof(str);
    if(n<=100){
    str.Empty();
    str.Format("%.3f", n);//保留三位小数格式输出到编辑框
    m_edit1.SetWindowText(str);
    }
    else
    {
    MessageBox("ERROR!");
    GetDlgItem(IDC_EDIT1)->SetFocus();
    }
    }
    在第二个函数里面我能大概判断编辑框中的数的范围(m_edit1是CEdit类型的成员变量),怎么做才能判断非法字符呢?比如程序运行的时候输入字母什么的,失去焦点后编辑框默认返回0.000,也不会提示错误。如果能够返回编辑框中的预设值,并且预设值呈全选状态最好。请问还要怎么改代码呢?
    输入非法值以后,直接清空非法值,设置为default值
    CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
    ASSERT(pEdit->GetSafeHwnd());
    pEdit->SetWindowText(_T("XXXXX")); // Default Value
    pEdit->SetSel(0, -1);
    pEdit->SetFocus();