MFC C++VS 2010:编辑框只接受字母、退格和空格
MFC C++ VS 2010 : Edit Box to accept only alphabets, backspace and spaces
正如标题中提到的,我目前正在为我的项目使用VS 2010 C++,MFC应用程序。目前是编程新手。
我目前被要求创建一个编辑框来接受姓名,全名,例如"Lee Roy Long"。我浏览了许多其他网站,但我不知道该用哪种方法来做
有什么例子或指南可以说明如何做到这一点吗?
编辑:除了这个已经解决的问题之外,我还有另一个问题[由于"限制",无法发布新问题],我目前正在使用相同的编辑框将新名称作为字符串添加到SQLite数据库中。我目前在将CString
转换为string
时遇到一些问题
vector<int> userSerialNumber;
vector<string> userName;
vector<int> userID;
vector<int> userTrainingImagesNo;
程序从这里开始:
CString str,text;
CString Lone = _T("MEEP"); // This one converts it succesffuly...
string ss((CStringA(Lone)));/Only works for declared CStrings?
CEdit* editBox = (CEdit*)GetDlgItem(IDC_EDIT1);
editBox->GetWindowText(str);
将用户从上面输入的内容添加到下面的程序中。
userSerialNumber.push_back(newserialnumber);
userID.push_back(newserialnumber);
userName.push_back(ss);
userTrainingImagesNo.push_back(Img);
我参考了许多关于如何将CString转换为字符串的网站,但都没有成功,包括这一个。
当我调试程序时,CString和string之间的转换不起作用,因为我得到了字符串的",这导致数据库更新了一个空白的"。
CString str="name"//Name从EditBox获取的字符串std::string newname="//在键入许多转换方法后,结果"
关于这件事,有什么我没有注意到的吗?
您可以通过从CEdit派生一个类并在派生类中处理WM_CHAR消息来过滤进入编辑控件的击键。要接受密钥,请将其传递给CEdit::OnChar;要拒绝密钥,只需返回而不调用CEdit函数。
若要将编辑控件连接到代码,请使用标准MFC子类化技术。右键单击控件并在父窗口中创建控件成员变量(CEdit)。然后进行编辑,将变量从CEdit更改为CYourDerivedCEdit。
上有一个关于这方面的教程和一个示例项目http://www.flounder.com/validating_edit_control.htm
作为捕获每个字符的替代方法,您可以处理编辑框的CWnd::OnKillFocus事件,并查询值一次。验证可以通过使用CString::SpanExclude和数字以及结果字符串中应为而非的任何其他字符来完成。例如,
CString stringEnteredByUser = _T("Lee Roy Long");
CString validatedString = stringEnteredByUser.SpanExcluding("0123456789");
if (stringEnteredByUser != validatedString)
AfxMessageBox(_T("Invalid string"), MB_OK);
"stringEnteredByUser"变量应包含用户输入的字符串。在本例中,使用SpanExclude会告诉您他们是否输入了数字。如果用户输入了无效字符(即该字符在提供给SpanExluding调用的列表中),则调用返回的字符串(validatedString)将与用户键入的字符串(stringEnteredByUser)不匹配。
如果验证失败,只需将焦点强制返回到编辑框即可。
我假设您知道一些基本的事件编码。
使用Textbox.textchanged
事件。还研究了ASCII
及其转换(asc
函数)如果你需要更多帮助,请在下面评论。祝你好运
- 2D数组来自文本输入,中间有空格
- 为字符串中每 N 个字符插入空格的函数没有按照我认为的方式工作?
- 如何在C++中读取空格分隔的输入 当我们不知道输入的数量时
- 如何在c++中使用system()来运行包含空格的python脚本
- basic_string的前导/尾部不区分空格的特征
- 移除前面有空格的前2个字符串
- 如何将以逗号和空格分隔的整数读取到 2D 数组中?
- 如何在 C++ 中从文件中读取字符数组(带有一些空格)
- 如何逐行读取文件,每行中的内容都用空格分隔并将其写入新文件中
- 为什么 c++(g++) 不允许模板返回类型和函数名称之间有空格?
- 用于存储由空格分隔的字符串的 C++/C 数据结构
- 在字符串中插入空格
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- C++为一串单词添加空格
- 使用另一个字符串从字符串中删除空格
- 我还可以添加什么来按空格或空格正确拆分C++字符串?
- 如何打印不带空格的输入整数?
- 无法在 Visual Studio 2010 中构建 Allegro C++ 程序
- 野牛/yacc 解析器在不被空格分隔时跳过 grammer - "unexpected $end"
- MFC C++VS 2010:编辑框只接受字母、退格和空格