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_F6CONTROL,删除它就像 VK_DELETE 一样有同样的问题,所以这些类型的问题与加速器有关。

我使用的解决方法是添加一个禁用选项,这样 TranslateAccelerator() 调用就不会从另一个主 window 的 PretranslateMessage() 完成。这允许将按下的键发送到对话框。