Dialogs and WM_CHAR
Michael Smolinski 4444 -- msmolins@glenayre.com Monday, June 24, 1996 Hello everyone... Windows 3.1 VC++ 1.51 I would like to process the WM_CHAR (OnChar()) message in a modal dialog box that has no CEdit controls. I added the WM_CHAR message with the Class brouser and put a TRACE inside the OnChar() function. This OnChar() never gets called. In the end, I just added an invisible edit box and mapped the "TEXT CHANGED" ( can't remember the exact name) message of it. In this OnTextChanged() routine I called the OnChar() function. This works fine, but there is one annoying side-effect. I have to constantly put focus on this invisible Edit Box (after the user clicks any other control) in order to get the character input. Does anybody know a better way to get character input in a modless Dialog? Or, is there something else I'm missing? Any help would be appreciated... Thanks in advance, Mike
Bill Campbell -- bill_campbell@ppp.ablecom.net Tuesday, June 25, 1996 [Mini-digest: 5 responses] [Moderator's note: I'm considering rejecting messages that say "I haven't tried this, but...". I'd like to hear from people on this.] Mike Wrote : >Windows 3.1 >VC++ 1.51 >I would like to process the WM_CHAR (OnChar()) message in a modal >dialog box that has no CEdit controls. Mike, Override CDialog::PreTranslateMessage Capture WM_CHAR and redirect to your handler routine... I havnt tested this but it should work .. :>) from the MFC Source Code BOOL CDialog::PreTranslateMessage(MSG* pMsg) { if (pMsg->message >= WM_KEYFIRST && pMsg->message <= WM_KEYLAST) // maybe translate dialog key return ::IsDialogMessage(m_hWnd, pMsg); return FALSE; } -----From: "Frederic Steppe"Seems like many peoples are trying to intercept keystrokes this times... Take a look a the CWnd::PreTranslateMessage member function, and/or read some recent messages in the list about the same subject. Frederic Steppe (frederics@msn.com) -----From: Dalmer Junior > You can override the PreTranslateMessage. It is there that you will receive all messages of the dialog including WM_CHAR . I Hope help you. -- Dalmer ***************************************************************** * Dalmer B. A. Junior Light-Infocon * * mail: dalmer@cgsoft.softex.br Development Analist * * Office Tel: (083) 333-1707 -------- __o * * FAX : (083) 333-1834 ------- _`\<,_ * * "Life is Short Ride Tough" ------- (*)/ (*) * ***************************************************************** -----From: kitk@mudshark.sunquest.com (Kit Kauffmann) You might try PreTranslateMessage: you can certainly get it with a ProcessMessageFilter override, though you then have to route it the dialog in question (e.g. GetActiveWindow) HTH! Make it idiot proof and someone will make a better idiot. -----From: Niels Ull Jacobsen I don't think the dialog will ever receive any WM_CHAR's. These are usual= ly send as a result of PreTranslateMessage translating a WM_KEYDOWN. And the PretanslateMessage of CDialog won't do these translations. So you need to trap WM_KEYDOWN instead Niels Ull Jacobsen, Kr=FCger A/S (nuj@kruger.dk) Everything stated herein is THE OFFICIAL POLICY of the entire Kruger=20 group and should be taken as legally binding in every respect.=20 Pigs will grow wings and fly.
| Вернуться в корень Архива |