(WIN32 API)编辑控件样式不适用于CreateWindowEx中的RichEdit

时间:2014-03-30 22:47:43

标签: c++ windows api winapi user-interface

我使用了以下代码并且工作正常,允许用户只输入数字。我想通过使用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仅接受此文本字段中的数字? 或
或者,我如何创建自己的自定义过滤器,只接受文本字段中的数字?

编辑:
这是我打字的形象 enter image description here

1 个答案:

答案 0 :(得分:4)

" RichEdit"控件类有自己的set of styles

但根据MSDN,ES_NUMBER是其中之一。但请注意ElmueSoft的评论。

要在没有控件帮助的情况下将输入过滤为仅数字,您可以将其子类化。但是,您需要处理相当多的消息。 WM_CHAR是最明显的,但WM_PASTEWM_SETTEXT可以传入非数字文字。

有关子类化的详细信息: