我要让编辑框里的第3个字符只能是小圆点,别的任何键对他都不起作用
编辑框里的第4个字符只响应s,n两个字符,其余键对他都不起作用
第2个字符数字键有用,碰到退格键就为0请问如何实现啊,代码!!!!!!!!!!!!!!

解决方案 »

  1.   

    正则表达式
    写个代码看看!!!我看不太懂MSDN。微软写VC MSDN水平太烂!
    快,代码!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    谢谢
      

  2.   

    从CEdit继承一个自定义的CNewEdit
    响应WM_CHAR, 在里面进行你需要的各种判断和处理代码就比较长了... 逻辑这么绕的...
      

  3.   

    响应 EN_CHANGE 消息 在其中判断一下就可以了
      

  4.   

    如何知道光标在编辑框3个字符上
    ----------------------------
    GetSel方法
      

  5.   

    重载dlg的virtual函数PreTranslateMessage;代码如下;实现的暂时还很差..
    觉得处理消息的方式不好..
    BOOL CWwDlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    CWnd * pedit=   GetDlgItem(IDC_EDIT1);   
        if(GetFocus()==pedit&&pMsg->message==WM_CHAR)
    {
    CString s;
    pedit->GetWindowText(s);
    switch(s.GetLength())
    {
    case 2: //要输入第3个字符
    if(pMsg->wParam!='.')
    {
    if(pMsg->wParam==0x08)
    {
    AfxMessageBox("");
    SendMessage(WM_CHAR,'0',0);
    return CDialog::PreTranslateMessage(pMsg);
    }
    return TRUE;
    }
    break;
    case 3://第4个;
    if(pMsg->wParam!='s'&&pMsg->wParam!='n')
    {
    if(pMsg->wParam==0x08)
    {
    return CDialog::PreTranslateMessage(pMsg);
    }
    return TRUE;
    }
    break;
    case 1://第2个字符
    if((pMsg->wParam>'9'||pMsg->wParam<'0')&&(pMsg->wParam<VK_NUMPAD0||pMsg->wParam<VK_NUMPAD9))
    {
    if(pMsg->wParam==0x08)
    {

    return CDialog::PreTranslateMessage(pMsg);
    }
    return TRUE;
    }
    default:
    return CDialog::PreTranslateMessage(pMsg);
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
    这种方式麻烦还很多,我复制粘贴呢?  我是中文呢?所以还是该用OnChangeEdit1() 判断Cstring 方便很多.
      

  6.   

    LZ QQ or 邮箱 ?
      

  7.   

    [email protected]
    不好意思啊,楼上,刚才出去打日本人了,给你赔罪!!!!!
      

  8.   

    响应WM_CHAR和WM_KEYDOWN消息处理,根据当前光标所在位置判断。