编辑框输入的一个字符串  要求按照d%*d%(就像屏幕分辨率1920*1080)的格式输入   要不然就提示输入错误  请问怎么实现   代码

解决方案 »

  1.   

    可在ON_EN_CHANGE 函数中判断
      

  2.   


     用sscanf判断字符串是否匹配某种简单规则。
    CString str = "00-24-8C-AF-2A-66";
    unsigned char uc[6];
    if (sscanf(str, "%02X-%02X-%02X-%02X-%02X-%02X", &uc[0], &uc[1], &uc[2], &uc[3], &uc[4], &uc[5]) == 6) 
    printf("OK\n")
    else
    printf("NG\n")你的类似。
      

  3.   

    看在是美女头像的面子上给你一个想法:
    你自绘一个CEdit控件,然后相应Onchar()消息,在里面判断就可以了··具体怎么判断就再简单不过了·随便你想处理什么字符就处理什么字符··想屏蔽什么字符就屏蔽什么字符··实在不行再给你写下源码·还是要自己考虑的··。
    像你那样提示出错很不方便,也很不友好··最好不要用了·
      

  4.   

    给段代码lz参考一下,可能不太完善,只过滤了大小写字母。没有过滤其他的一些符号,如~!@#$%^&()[]{}等等。
    ------------------------------------------------------------------------
    BOOL CAAAEDlg::PreTranslateMessage(MSG* pMsg)
    {
    // TODO: Add your specialized code here and/or call the base class
    if((pMsg->hwnd == GetDlgItem(IDC_EDIT1)->GetSafeHwnd()) && (WM_CHAR == pMsg->message))
    {
    if((pMsg->wParam >= _T('1') && pMsg->wParam <= _T('9')) || (pMsg->wParam == _T('*')))
    {
    CString strText(_T(""));
    GetDlgItemText(IDC_EDIT1, strText);
    if(strText.GetLength() < 1)
    {
    if(_T('*') == pMsg->wParam)
    {
    return 1;
    }
    }
    }
    else if((pMsg->wParam >= _T('a') && pMsg->wParam <= _T('z')) || (pMsg->wParam >= _T('A') && pMsg->wParam <= _T('Z')))
    {
    return 1;
    }
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  5.   

    就把这个过程放在Onchar()消息处理函数中,放在楼上的PreTranslateMessage也行,就是判断稍微麻烦点
      

  6.   

    [0-9]+*[0-9]··不过MFC没有支持·需要用到boost库等扩展库
      

  7.   

    既然楼主嫌写代码麻烦,就弄两个编辑框,中间再放一个静态文本框,Caption属性设为“*”
    再把编辑框的Number属性选上,系统就会自动只接收数字输入