Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MFC&x2B+;VS 2010:编辑框仅接受字母、退格和空格 标题中提到的,我目前正在使用VS 2010 C++,MFC应用程序用于我的项目。目前是编程新手_C++_Visual Studio 2010_Mfc - Fatal编程技术网

MFC&x2B+;VS 2010:编辑框仅接受字母、退格和空格 标题中提到的,我目前正在使用VS 2010 C++,MFC应用程序用于我的项目。目前是编程新手

MFC&x2B+;VS 2010:编辑框仅接受字母、退格和空格 标题中提到的,我目前正在使用VS 2010 C++,MFC应用程序用于我的项目。目前是编程新手,c++,visual-studio-2010,mfc,C++,Visual Studio 2010,Mfc,我目前被要求创建一个编辑框来接受姓名、全名,例如“Lee Roy Long”。我已经浏览了很多其他网站,但我不知道该用什么方法来做 有没有什么例子或指南来说明这一点 编辑:除了已解决的问题之外,我还有一个问题[由于“限制”无法发布新问题],我目前正在使用同一个编辑框将新名称作为字符串添加到SQLite数据库中。我目前在将CString转换为string vector<int> userSerialNumber; vector<string> userName; vecto

我目前被要求创建一个编辑框来接受姓名、全名,例如“Lee Roy Long”。我已经浏览了很多其他网站,但我不知道该用什么方法来做

有没有什么例子或指南来说明这一点

编辑:除了已解决的问题之外,我还有一个问题[由于“限制”无法发布新问题],我目前正在使用同一个编辑框将新名称作为字符串添加到SQLite数据库中。我目前在将
CString
转换为
string

vector<int> userSerialNumber;
vector<string> userName;
vector<int> userID;
vector<int> userTrainingImagesNo;
将用户的输入从上面添加到下面的程序中

            userSerialNumber.push_back(newserialnumber);
        userID.push_back(newserialnumber);
        userName.push_back(ss);
        userTrainingImagesNo.push_back(Img);
我已经参考了很多关于如何将cstring转换为字符串的网站,但是没有一个网站有效,包括这一个

当我调试程序时,CString和string之间的转换不起作用,因为我得到了string的“”,这导致数据库更新为空“”

CString str=“name”//从EditBox获取的名称CString std::string newname=“”//键入许多转换方法后,结果“”


有什么我没有注意到的吗?

我假设您知道一些基本的事件编码

使用
Textbox.textchanged
事件。 同时研究
ASCII
及其转换(
asc
函数) 如果您需要更多帮助,请在下面进行评论。
祝你好运

通过从CEdit派生类并在派生类中处理WM_CHAR消息,可以过滤进入编辑控件的击键。要接受一个键,将其传递给CEdit::OnChar,要拒绝一个键,只需返回而不调用CEdit函数

要将编辑控件连接到代码,可以使用标准的MFC子类化技术。右键单击控件并在父窗口中创建控件成员变量(CEdit)。然后编辑以将变量从CEdit更改为CYourDerivedCEdit


有一个关于这方面的教程和一个位于

的示例项目,作为捕获每个字符的替代方案,您可以处理编辑框的事件并查询一次值。验证可以通过使用with numbers和任何其他应而不是在结果字符串中的字符来完成。比如说,

CString stringEnteredByUser = _T("Lee Roy Long");
CString validatedString = stringEnteredByUser.SpanExcluding("0123456789");
if (stringEnteredByUser != validatedString)
   AfxMessageBox(_T("Invalid string"), MB_OK);
“stringEnteredByUser”变量应包含用户输入的字符串。在本例中,使用SpanExclusive将告诉您他们是否输入了数字。调用返回的字符串(validatedString)将与用户键入的字符串(stringEnteredByUser)不匹配,如果他们输入了无效字符(即,该字符在为排除调用提供的列表中)


如果验证失败,只需将焦点强制回到编辑框。

此答案不适用于MFC应用程序。您的标题与问题不匹配。“backspace”是键盘上的编辑键,而不是字符。您是否也接受箭头键和删除?
CString stringEnteredByUser = _T("Lee Roy Long");
CString validatedString = stringEnteredByUser.SpanExcluding("0123456789");
if (stringEnteredByUser != validatedString)
   AfxMessageBox(_T("Invalid string"), MB_OK);