MFC
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