我有一个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 );
}}
我究竟做错了什么?
先感谢您,
科尼留
最佳答案
因此,似乎没有办法将关键事件转发到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 );
}
关于c++ - MFC CFormView OnKeyDown事件未触发,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20194642/