Событие 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 );
}