是否有一种简单的方法或函数来检查Editbox的条目是否为数字,包括浮点数。不允许使用任何字母或字母数字条目。没有浮点数部分我会检查ascii但我认为它不适用于浮点数。
由于
答案 0 :(得分:2)
由于您的问题标有mfc
,因此以下是使用CString的代码段:
<击> 撞击>
CString ss;
float ff;
GetDlgItemText(IDC_MY_EDIT_BOX, ss);
if (_stscanf_s(ss, _T("%f"), &ff) == 1)
// ff contains the value
else
// error
如果需要使用双精度数,请在scanf调用中使用"%lf"
。
击>
修改强>
CString ss;
float ff;
GetDlgItemText(IDC_MY_EDIT_BOX, ss);
LPCTSTR lpszString = ss;
TCHAR *endptr;
ff = (float) _tcstod(lpszString, &endptr);
if (endptr != lpszString && *endptr == '\0')
// ff contains the value
else
// error
答案 1 :(得分:1)
如果是对话框,则可以向对话框添加编辑控件。比启动对话框向导将变量添加到此编辑控件。选择float类型。 DDX_Text例程将完成剩下的工作。
但是这将允许输入字母字符。如果你想解决这个问题。您可以使用特殊的OnChar(WM_CHAR)处理程序对编辑控件进行子类化,该处理程序只允许使用十进制数和小数点。