Board index » Visual Studio » How to filter lower case characters in an edit control?
|
Fati
|
How to filter lower case characters in an edit control?
Visual Studio336
Hi to all, I created a class that enherits from CEdit and overrode its OnChar() message handler to intercept the entered keys and filter only those that are lower case. It also verifies if an entered key is upper case to convert it to lower case and filter it. Everything works good except the conversion from upper to lower case. The problem is that even if the OnChar() handler does convert the character to lower case, the character is still displayed in the edit box as it was entered, i.e. in upper case. Please note that if I remove the line: "nChar = tolower(nChar);", the upper case characters will be rejected and this is not what I want. I want the same behaviour than the edit control's Lowercase property, which will convert all characters to lowercase as they are typed into the edit box. However, this property allows all other character types to be output. Here's the code of the OnChar() message handler: #define BACK_SPACE 8 void CEditLoCase::OnChar(UINT nChar, UINT nRepCnt, UINT nFlags) { TRACE("OnChar(): %c ; %d\n", nChar, nFlags); // Filter all the characters in 'm_pFilter' to be processed. nChar = tolower(nChar); if ((nChar>= 'a' && nChar <= 'z') || nChar == BACK_SPACE) { CEdit::OnChar(nChar, nRepCnt, nFlags); } else { MessageBeep(MB_OK); } } I appreciate any help and thank you in advance. Geo - |
