Edit控件想验证输入,比如只能输入0~9的数字,如何实现??

解决方案 »

  1.   

    选中edit控件,点右键
    在属性表里的style(风格)选中 number(数字)这个选项就可以实现了
    好运!
      

  2.   

    响应编辑框的WM_CHAR,并判断输入的字符
      

  3.   

    怎么响应呀?我刚学不太懂呀,比如我还可以输入A~F,如何响应?KeyPress能做到么?
      

  4.   

    填加这个虚函数:PreTranslateMessage(MSG* pMsg)
    if(pMsg->message==WM_KEYDOWN)
    {
       int a=pMsg->wParam;
       int d=GetFocus()->GetDlgCtrlID();
       CString str;
       if((a>=48&&a<=57)||(a>=65&&a<=70)||(a==8)||(a==46)||(a>=96&&a<=105)||(a>=37&&a<=40))
           return CDialog::PreTranslateMessage(pMsg);
       else 
           return 1L;
    }
    我这边是用在对话框的..
      

  5.   

    新建一个自己的Edit类,继承CEdit,假设命名为CMyEdit,在这个类中添加WM_CHAR消息响应函数,添加如下代码
    void MyEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    if ((( '0' <= nChar ) && ( '9' >= nChar )) || 
        (( 'A' <= nChar ) && ( 'F' >= nChar )))
    {
    CEdit::OnChar(nChar, nRepCnt, nFlags);
    }
    else
    {
    return;
    }
    }之后在Class Wizard中选择Member Variables为相应的Edit ID添加变量,category中选择Control,variable type 选择CMyEdit.
    之后在包含Edit控件的对话框头文件中加入
    #include"MyEdit.h"
      

  6.   

    0-9 A-F 
    只能子类化 方法可以参考 http://blog.programfan.com/article.asp?id=20893 
      

  7.   

    从CEdit派生一个新的类,重载WM_CHAR消息,在OnChar()中添加对输入字符的判断,不是你想要的字符直接返回就可以了//只能输入16进制: 
    void CXXXEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags)

     // TODO: Add your message handler code here and/or call default
     if(::isdigit(nChar) || (nChar>='A' && nChar<='F') || (nChar>='a' && nChar<='f')) 
      CEdit::OnChar(nChar, nRepCnt, nFlags);