我使用了以下代码并且工作正常,允许用户只输入数字。我想通过使用RichEdit来增加功能,所以我添加了它。
我从使用开始:
wchar_t sampletext[] = L"foobar";
HWND inputText = CreateWindowEx(WS_EX_CLIENTEDGE, L"EDIT", sampletext,
ES_NUMBER | WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_MULTILINE,
10, 10, 500, 75, hWnd, NULL, *hInst, NULL);
为:
LoadLibrary(L"riched32.dll");
wchar_t sampletext[] = L"foobar";
HWND inputText = CreateWindowEx(WS_EX_CLIENTEDGE, L"RichEdit", sampletext,
ES_NUMBER | WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_MULTILINE,
10, 10, 500, 75, hWnd, NULL, *hInst, NULL);
更改它允许我使用CTRL + Z和CTRL + A以及所有但现在由于某种原因我可以输入不是数字的字符。
如何解决此问题,以便Rich Edit仅接受此文本字段中的数字?
或
或者,我如何创建自己的自定义过滤器,只接受文本字段中的数字?
编辑:
这是我打字的形象
答案 0 :(得分:4)
" RichEdit"控件类有自己的set of styles。
但根据MSDN,ES_NUMBER
是其中之一。但请注意ElmueSoft的评论。
要在没有控件帮助的情况下将输入过滤为仅数字,您可以将其子类化。但是,您需要处理相当多的消息。 WM_CHAR
是最明显的,但WM_PASTE
和WM_SETTEXT
可以传入非数字文字。
有关子类化的详细信息: