MFC:Dialog PreTranslateMessage() WM_KEYDOWN 没有看到 VK_DELETE?
MFC: Dialog PreTranslateMessage() WM_KEYDOWN not seeing VK_DELETE?
我有一个奇怪的地方,我得到了所有其他虚拟密钥,但 VK_DELETE
没有收到?这是一个 MFC 应用程序,基于 CDialogEx
。我在 PreTranslateMessage()
中检查它
if (pMsg->wParam==VK_SPACE) {
// do my stuff - WORKS!
}
else if (pMsg->wParam==VK_INSERT) {
// do my stuff - WORKS!
draw=true;
}
else if (pMsg->wParam==VK_DELETE) {
// do my stuff - NEVER RECEIVED!!
}
else ... etc ...
我 copy/pasted 上面的代码确保 if 语句中没有我看不见的东西。
有什么想法吗?
TIA!!
好的,所以发现 VK_DELETE
是一个加速器,VK_F6
也是,使用 VK_F6
是可行的,但仔细观察加速器 VK_F6
有 CONTROL
,删除它就像 VK_DELETE
一样有同样的问题,所以这些类型的问题与加速器有关。
我使用的解决方法是添加一个禁用选项,这样 TranslateAccelerator()
调用就不会从另一个主 window 的 PretranslateMessage()
完成。这允许将按下的键发送到对话框。
我有一个奇怪的地方,我得到了所有其他虚拟密钥,但 VK_DELETE
没有收到?这是一个 MFC 应用程序,基于 CDialogEx
。我在 PreTranslateMessage()
if (pMsg->wParam==VK_SPACE) {
// do my stuff - WORKS!
}
else if (pMsg->wParam==VK_INSERT) {
// do my stuff - WORKS!
draw=true;
}
else if (pMsg->wParam==VK_DELETE) {
// do my stuff - NEVER RECEIVED!!
}
else ... etc ...
我 copy/pasted 上面的代码确保 if 语句中没有我看不见的东西。
有什么想法吗?
TIA!!
好的,所以发现 VK_DELETE
是一个加速器,VK_F6
也是,使用 VK_F6
是可行的,但仔细观察加速器 VK_F6
有 CONTROL
,删除它就像 VK_DELETE
一样有同样的问题,所以这些类型的问题与加速器有关。
我使用的解决方法是添加一个禁用选项,这样 TranslateAccelerator()
调用就不会从另一个主 window 的 PretranslateMessage()
完成。这允许将按下的键发送到对话框。