2010-11-05 38 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