2014-03-30 55 views
1

我使用了下面的代碼,它工作正常,只允許用戶輸入數字。我想通過使用RichEdit來增加功能,所以我補充說。(WIN32 API)編輯控件樣式不適用於RichEdit在CreateWindowEx

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

「的RichEdit」 是不同的控制類,並有自己的風格。 –

回答

4

的 「RichEdit的」 控制類的圖像都有自己的set of styles。根據MSDN的說法,它們中的一個是ES_NUMBER。但是,請注意ElmueSoft的評論。

要在沒有來自控件的幫助下將輸入過濾爲僅數字,您可以對其進行子類化。不過你需要處理好幾條消息。 WM_CHAR是最明顯的,但WM_PASTEWM_SETTEXT可以有非數字文本通過

的子類良好的信息:

+0

我如何繼承richedit? – user2893243

+0

@ user2893243:編寫一個窗口過程,像平常一樣創建窗口,然後調用'SetWindowSubclass'。我會在我的回答中添加一個鏈接,以便對Raymond Chen的博客進行解釋。 –

相關問題