OnKeyDown() kills accelerators
Isaac Katzenelson -- isaac_k@goldnet.net.il Thursday, November 07, 1996 [Mini-digest: 2 responses] George Grant wrote: > > Environment: VC++4.0, Win95 > > I really hope someone can help... This one's got me stumped... I've implemented my own grid view, and I'm having a problem with key events. > > I've implemented OnChar() to handle WM_CHAR messages (such as when keys are typed for entry into a cell) and WM_KEYDOWN messages (for when the arrow keys are used.) > > I had to do a WM_KEYDOWN handler because my WM_CHAR handler wasn't getting called for the arrow keys. Now when I try to use "Alt+__" combinations for menu commands, they don't work (at least when the mouse is over my grid view.) My KEYDOWN handler is getting called, but I don't know what in MFC to call to pass the keydown to the menu! > > The MFC docs seem even more obtuse on this than usual, or maybe I'm just an idiot; probably the latter. > > -George Hi George, Try using WM_SYSCHAR. Isaac. -----From: Randy TaylorAt 06:43 PM 11/4/96 -0800, you wrote: [snip] > >My KEYDOWN handler is getting called, but I don't know what in MFC to call to pass the keydown to the menu! > uh, what menu? How is the issue of key events related to menus in your application? randy_taylor@ebt.com
Mike Klimentiev -- mikek@rzs.com Saturday, November 09, 1996 >---------- >From: George Grant[SMTP:doubleg@ix.netcom.com] >Sent: Monday, November 04, 1996 6:43 PM >To: 'mfc-l@netcom.com' >Subject: OnKeyDown() kills accelerators > >Environment: VC++4.0, Win95 > >I really hope someone can help... This one's got me stumped... I've >implemented my own grid view, and I'm having a problem with key events. > >I've implemented OnChar() to handle WM_CHAR messages (such as when keys >are typed for entry into a cell) and WM_KEYDOWN messages (for when the >arrow keys are used.) > >I had to do a WM_KEYDOWN handler because my WM_CHAR handler wasn't >getting called for the arrow keys. Now when I try to use "Alt+__" >combinations for menu commands, they don't work (at least when the >mouse is over my grid view.) My KEYDOWN handler is getting called, but >I don't know what in MFC to call to pass the keydown to the menu! > >The MFC docs seem even more obtuse on this than usual, or maybe I'm >just an idiot; probably the latter. > >-George Do you call base class implementation of OnChar()? Sometimes people forget to do it. -Mike
George Grant -- doubleg@ix.netcom.com Sunday, November 10, 1996 Environment: VC++4.0, Win95 That's the thing; I DID call CScrollView::OnChar() and = CScrollView::OnKeyDown(). Those are the two I've overridden in = CDiskView, which is my class (it's derived from CScrollView). Does anybody have any more ideas? This has me completely baffled; I = haven't overridden any more messages that have anything to do with = keystrokes! Is there something more I need to do? ---------- From: Mike Klimentiev[SMTP:mikek@rzs.com] Sent: Saturday, November 09, 1996 5:56 PM To: 'mfc-l@netcom.com' Subject: RE: OnKeyDown() kills accelerators ... Do you call base class implementation of OnChar()? Sometimes people forget to do it. -Mike
GoroKhM1 -- gorokhm1@SMTP.ATG-NET.COM Monday, November 11, 1996 Hi Mike, The following may help you or give an idea: Q117500 Using Accelerators with an MFC Modeless Dialog Box Q100770 Accelerator Keys When Modal Dialog Box Main Window Add a method to process accelerators _before_ standard routing: BOOL CMyApp::ProcessMessageFilter(int code, LPMSG lpMsg) { CMyFrame* pMainFrame = (CMyFrame*)AfxGetMainWnd(); if (pMainFrame) { HACCEL hAccel = pMainFrame->m_hAccelTable; if (hAccel && ::TranslateAccelerator(pMainFrame->m_hWnd, hAccel, lpMsg)) return TRUE; // key processed } return CWinApp::ProcessMessageFilter(code, lpMsg); } // CMyApp::ProcessMessageFilter() MarkG@usa.net
| Вернуться в корень Архива |