0

エディットボックスへのエントリが浮動小数点数を含む数値であるかどうかを確認する簡単な方法または機能はありますか。アルファベットまたは英数字のエントリは許可されません。浮動小数点数の部分がなければ ascii をチェックしますが、浮動小数点数では機能しないと思います。

ありがとう

4

2 に答える 2

2

あなたの質問は でタグ付けされているため、mfcCString を使用したコード スニペットを次に示します。

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 ルーチンが残りを行います。

ただし、これにより、アルファベット文字の入力が許可されます。これも直したいなら。10 進数と小数点のみを許可する Special OnChar (WM_CHAR) ハンドラーを使用して、エディット コントロールをサブクラス化できます。

于 2013-11-06T18:50:14.523 に答える