按照固定格式输入字符串 编辑框输入的一个字符串 要求按照d%*d%(就像屏幕分辨率1920*1080)的格式输入 要不然就提示输入错误 请问怎么实现 代码 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可在ON_EN_CHANGE 函数中判断 用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")elseprintf("NG\n")你的类似。 看在是美女头像的面子上给你一个想法:你自绘一个CEdit控件,然后相应Onchar()消息,在里面判断就可以了··具体怎么判断就再简单不过了·随便你想处理什么字符就处理什么字符··想屏蔽什么字符就屏蔽什么字符··实在不行再给你写下源码·还是要自己考虑的··。像你那样提示出错很不方便,也很不友好··最好不要用了· 给段代码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);} 就把这个过程放在Onchar()消息处理函数中,放在楼上的PreTranslateMessage也行,就是判断稍微麻烦点 [0-9]+*[0-9]··不过MFC没有支持·需要用到boost库等扩展库 既然楼主嫌写代码麻烦,就弄两个编辑框,中间再放一个静态文本框,Caption属性设为“*”再把编辑框的Number属性选上,系统就会自动只接收数字输入 工程中新建的类引用其他类变量的问题 CString DLL中使用DAO在MFC程序中测试通过WIN32程序中却提示CDaoException 一个结构中有个变量,按这个变量排序有没有泛型算法。合适的。 请问,用CStdioFile类时,怎样获取当前所在行的值? 请问高手:监测Hub的IP包(HTTP协议),如何在此包内加内容再返回到目的地址? 通过串口给外部设备发一个开关信号的问题。 定时器问题求助。急!!! 请问VC 能通过VGA采集到电脑屏幕的功能吗? 请教如何编程实现禁止IE访问某些网站和本地硬盘 帮忙改一改错误 多线程问题
用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")你的类似。
你自绘一个CEdit控件,然后相应Onchar()消息,在里面判断就可以了··具体怎么判断就再简单不过了·随便你想处理什么字符就处理什么字符··想屏蔽什么字符就屏蔽什么字符··实在不行再给你写下源码·还是要自己考虑的··。
像你那样提示出错很不方便,也很不友好··最好不要用了·
------------------------------------------------------------------------
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);
}
再把编辑框的Number属性选上,系统就会自动只接收数字输入