Событие MFC CFormView OnKeyDown не вызывается

У меня есть CFormView, и у меня есть некоторые элементы управления на нем. Я реализовал событие OnKeyDown в моем CFormView. Все хорошо, за исключением того, что мое событие никогда не запускается, потому что фокус находится на поле со списком в моем CFormView. Я не хочу, чтобы поле со списком получало событие. Я хочу, чтобы CFormView получил его. Поэтому я реализовал PreTranslateMessage(MSG* pMsg), и он удаляет событие из поля со списком, но никогда не передает его в CFormView. Вот код:

BOOL CfinalprojView::PreTranslateMessage(MSG* pMsg) { 
if( pMsg->message == WM_KEYDOWN ) {
    SendMessage( WM_COMMAND, MAKEWPARAM( IDD_FINALPROJ_FORM, BN_CLICKED ), ( LPARAM )0 );
    return TRUE; 
} else if( pMsg->message == WM_KEYUP ) {
    return TRUE; 
} else {
    return CFormView::PreTranslateMessage( pMsg );
}}

Что я делаю неправильно?

Заранее спасибо,

Корнелиу

1 ответ

Решение

Таким образом, кажется, что нет способа перенаправить ключевые события в CFormView. Вместо этого можно поймать события в PreTranslateMessage(MSG* pMsg) и проверить нажатую клавишу следующим образом:

BOOL CfinalprojView::PreTranslateMessage(MSG* pMsg) {
    if( pMsg->message == WM_KEYDOWN ) {
        if( pMsg->wParam == VK_DELETE ) {
            ...
        }
        return TRUE; 
    }
    else if( pMsg->message == WM_KEYUP )
        return TRUE; 
    else
        return CFormView::PreTranslateMessage( pMsg );
} 
Другие вопросы по тегам