MFC: обработка символьных событий во фрейме или приложении - PullRequest
0 голосов
/ 05 ноября 2010

Скажем, у меня есть большой фрейм приложения, в котором я хочу, чтобы ввод по умолчанию был конкретным, центральным виджетом в этом фрейме. Если нажата какая-либо клавиша, например, удалить или удалить:

  • внутри элемента управления, который прослушивает этот ключ. Я хочу, чтобы этот элемент управления обработал его.
  • внутри элемента управления, который не заботится об этом ключе, я хочу, чтобы он был передан в центральный виджет.

В WX я смог сделать это с помощью клавиши escape, переопределив ProcessEvent в приложении. Затем я попросил базу приложения попытаться справиться с ней (которая отправит событие элементу управления для попытки обработки), а если нет, я отправлю его на правильный виджет.

Я не могу найти корреляции в MFC. Кажется, что события персонажа никогда не отправляются в дерево окон родителям или в приложение. Что я могу сделать?

1 Ответ

1 голос
/ 06 ноября 2010

Вы должны иметь возможность перехватывать все WM_KEYDOWN сообщения путем переопределения CWinApp::PreTranslateMessage в вашем производном классе CWinApp.

Пример:

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

    return CWinApp::PreTranslateMessage(pMsg);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...