如题:为保证数据的输入,要限制输入为2位16进制数比如0A,现在想在输入的时候就判断是不是符合格式的数据,并弹出提示。
也想过获取输入的数据后进行判断,但感觉有更好的方法,大家给点建议,谢谢!

解决方案 »

  1.   

    PretranslateMessage  + WM_EDITCHANGE 每次PretranslateMessage  中 WM_CHAR的时候,判断一下这个字符是不是十六进制数,不是的话直接return TRUE;在WM_EDITCHANGE时检查格式就行了。格式不对的话,某个按钮不可用。
      

  2.   

    也可以派生个CEdit,在CEdit里去处理,如果只有1个地方用到了可以在父窗口中去处理,如果这样的EDIT有多个,可以单独派生出一类来处理,处理的方法跟楼上一样
      

  3.   

    纠正下措辞,在CEdit中处理是直接响应WM_CHAR
      

  4.   

    派生Edit一个子类。。判断字符输入是否正确!!
    WM_CHAR
      

  5.   


    //先取得输入字符串后再进行判断
     char str[128],s3[100];
    GetDlgItemText(IDC_DLU_MAC_T2,str,20); for( int i=0;i<sizeof(str);i++ )
        {
         char c =str[i];
    if(!(((c >= '0') && (c <= '9')) || ((c >= 'a') && (c <= 'f'))|| ((c >= 'A') && (c <= 'F'))))
    {
    sprintf(s3,"MAC Address is error!");
    MessageBox(s3,"");
    return;
    }
    }