0

是否有一种简单的方法或功能来检查编辑框的条目是否为数字,包括浮点数。不允许任何字母或字母数字条目。如果没有浮点数部分,我会检查 ascii,但我认为它不适用于浮点数。

谢谢

4

2 回答 2

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

如果您需要使用双精度数,"%lf"请在 scanf 调用中使用。

编辑:

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
于 2013-11-06T16:37:41.140 回答
1

如果它是一个对话框,您可以在对话框中添加一个编辑控件。比启动对话框向导添加一个变量到这个编辑控件。选择类型浮动。DDX_Text 例程将完成其余的工作。

但这将允许输入字母字符。如果你也想解决这个问题。您可以使用仅允许小数和小数点的特殊 OnChar (WM_CHAR) 处理程序对编辑控件进行子类化。

于 2013-11-06T18:50:14.523 回答