gpt4 book ai didi

c++ - MFC CFormView OnKeyDown 事件未触发

转载 作者:太空宇宙 更新时间:2023-11-04 11:44:34 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com