【问题标题】:How to disable normal behaviour of Alt key?如何禁用 Alt 键的正常行为?
【发布时间】:2012-03-26 12:14:01
【问题描述】:

通常,Alt 键会在 Windows 中打开菜单。

我需要禁用它,因为我的应用程序需要 Alt 键。 (它是旧计算机的模拟器,所以我需要模仿它的行为。)我用纯 Windows API 编写它,所以我希望一定有一些消息被发送并且需要被禁用、丢弃或忽略。

Alt+Tab 没问题,还有其他系统键和组合键,我只需要在打开菜单时忽略 Alt。

(我的应用程序使用 DirectInput 读取按键,所以效果很好。我只需要禁用使用 Alt 键打开菜单的功能。我将使用鼠标打开菜单。)

【问题讨论】:

  • 这是什么菜单?我只是在 Windows 框上键入 Alt 并没有出现菜单。
  • @Kaz:它将焦点设置到焦点窗口的菜单栏。

标签: c++ c winapi keyboard


【解决方案1】:

如何检查WM_SYSCOMMAND,当wParam为SC_KEYMENU时,返回0?

更新/精确解决方案:

if(wParam==SC_KEYMENU && (lParam>>16)<=0) return 0;
return DefWindowProc(hwnd, message, wParam, lParam);

说明:如果lParam&gt;&gt;16为正数则鼠标激活菜单,为零或负数则通过Alt或Alt+某物激活菜单。

【讨论】:

  • 这帮助我找到了正确的解决方案。我在这个答案中添加了解决方案。
  • 也帮助了我。这个问题太可怕了,Windows 8 上的 ALT 键和其他一些键经常与 Win32 应用程序发生冲突。还要感谢您的简短描述,它使您更清楚地了解发生了什么。我以前从来不知道 lParam 或 wParam 的用途是什么,因为它从来没有在我的需要中使用过太多。
猜你喜欢
  • 2013-02-12
  • 2021-06-20
  • 1970-01-01
  • 1970-01-01
  • 2015-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多