2010-11-05 78 views
0

假设我有一个很大的应用程序框架,我希望默认输入是该框架中特定的中央控件。如果按下某个键(如删除或转义键):MFC:处理帧或应用程序中的字符事件

  • 在监听该密钥的控件中,我希望该控件处理该密钥。
  • 在一个不关心该键的控件中,我希望它传递给中央控件。

在WX中,我可以通过在应用程序中重写ProcessEvent来实现此功能。然后,我告诉应用程序库尝试处理它(这会将事件发送到控件进行尝试处理),如果没有,我会将它发送到正确的小部件。

我似乎无法在MFC中找到相关性。看起来,角色事件不会被发送到父窗口或应用程序的窗口树中。我能做什么?

+0

没有回答这个问题。它不能做到。 PreTranslate过早,没有其他选择。 – 2010-11-17 20:42:52

回答

1

您应该能够通过覆盖CWinApp派生类中的CWinApp::PreTranslateMessage拦截所有WM_KEYDOWN消息。

例子:

BOOL CMyApp::PreTranslateMessage(MSG* pMsg) 
{ 
    if (pMsg->message == WM_KEYDOWN) { 
     // Do something special with this message 
    } 

    return CWinApp::PreTranslateMessage(pMsg); 
} 
+0

在过滤出来之前,是否让具有焦点的小部件试图对其进行处理? – 2010-11-05 23:02:11

相关问题