主菜单键C ++

时间:2019-07-01 19:29:55

标签: c++ windows

我正在创建一个简单的C ++控制台程序来娱乐,并且我正在寻找一种方法,允许用户在按F1或F2之类的功能键时随时返回“主菜单”输出。 / p>

无论如何,我是否可以随时准备接受该键的程序,还是需要有一个switch语句,以便在程序每次接受用户输入时都可以调用“主菜单”打印功能?这是基于控制台的程序可能无法实现的吗?

编辑:目前,我仅在基于Windows的程序上工作。

1 个答案:

答案 0 :(得分:1)

如果您使用的是Windows:

您可以使用GetKeyState或GetAsyncKeyState,但这不会为您提供按键/按键事件。它只会告诉您当前按下了哪些键。

因此,如果您需要获取keydown / keyup事件,则可以安装一个钩子。控制台窗口具有一个窗口句柄,该窗口句柄由Windows中的代码拥有,而一个消息泵也由Windows中的代码拥有。

您可以使用GetConsoleWindow获取控制台窗口的窗口句柄,然后使用SetWindowsHookEx安装WH_CALLWNDPROC挂钩以侦听发送到控制台窗口的消息。

您可以尝试使用WH_MSGFILTER挂钩。我不知道这是否适用于控制台窗口,但是如果它能正常工作,它将产生的消息更少。