我有一个CFormView,我有一些控件。我在我的CFormView上实现了一个OnKeyDown事件。一切都很好,除了我的事件从未被触发,因为焦点在我的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 );
}}
我做错了什么?
提前谢谢你,
科尔内留
答案 0 :(得分: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 );
}