RT,搜索了一下几乎都是VB的 应该是不能是用cstring的,因为是/clr的命令行格式 求解

解决方案 »

  1.   

    1. 派生一个基于CEdit的类,如CNumEdit2. 在类中处理WM_CHAR消息void CNumEdit::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) 
    {
    CString str;
    GetWindowText(str);
    if (nChar == 8) //退格键
    {
    CEdit::OnChar(nChar, nRepCnt, nFlags);
    return;
    }
    if (nChar == 32) //空格键
    {
    CEdit::OnChar(nChar, nRepCnt, nFlags);
    return;
    } if ((nChar==46)&&(!str.IsEmpty())&&(str.Find('.',0)!= -1)) //防止输入两个小数点
    nChar = 0; if (((nChar<45)||((nChar>46)&&(nChar<48))||((nChar>57))) //只允许输入数字,小数点
    {
    nChar = 0;
    }
    else 
    CEdit::OnChar(nChar, nRepCnt, nFlags);
    }
    3. 在主窗口类的头文件引用CNumEdit的头文件4. 给你的编辑框添加CNumEdit类型的控制变量
      

  2.   

    在Pretranslatemessage函数中,过滤非'.'和非数字的可以。
      

  3.   

    使用数据映射,轻松解决问题:
    定义一个double类型成员变量m_dbl,比如把它与标识符为IDC_NUMBER的编辑框建立关联,那么就在构造函数中为其赋予初值,然后在对话框的DoDataExchanged函数中添加:
    DDX_Text(pDX,IDC_NUMBER,m_dbl);
    DDV_MinMaxDouble(pDX,m_dbl,0.0,100.0);