主菜单键C++; 我正在创建一个简单的C++控制台程序来娱乐,我正在寻找一种方法,让用户在任何时候都能返回到“主菜单”输出,如果它们要命中函数键,比如F1或F2。
我是否可以让我的程序随时准备接受此键,或者我是否需要有一个开关语句,可以在程序每次接受用户输入时调用“主菜单”打印功能?对于基于控制台的程序来说,这可能是无法实现的吗主菜单键C++; 我正在创建一个简单的C++控制台程序来娱乐,我正在寻找一种方法,让用户在任何时候都能返回到“主菜单”输出,如果它们要命中函数键,比如F1或F2。,c++,windows,C++,Windows,我是否可以让我的程序随时准备接受此键,或者我是否需要有一个开关语句,可以在程序每次接受用户输入时调用“主菜单”打印功能?对于基于控制台的程序来说,这可能是无法实现的吗 编辑:目前,我只使用基于Windows的程序。如果您使用的是Windows: 您可以使用GetKeyState或GetAsyncKeyState,但这不会提供keydown/keyup事件。它只会告诉你哪些键当前处于关闭状态 因此,如果需要获取keydown/keyup事件,可以安装一个钩子。控制台窗口有一个窗口句柄,由Windo
编辑:目前,我只使用基于Windows的程序。如果您使用的是Windows: 您可以使用GetKeyState或GetAsyncKeyState,但这不会提供keydown/keyup事件。它只会告诉你哪些键当前处于关闭状态 因此,如果需要获取keydown/keyup事件,可以安装一个钩子。控制台窗口有一个窗口句柄,由Windows中的代码拥有,还有一个消息泵,也由Windows中的代码拥有 在使用SetWindowsHookEx安装WH_CALLWNDPROC钩子以侦听发送到控制台窗口的消息时,可以使用GetConsoleWindowt获取控制台窗口的窗口句柄
你可以试试WH_MSGFILTER挂钩。我不知道这是否适用于控制台窗口,但如果它确实有效,则会生成较少的可忽略消息。您是否试图让它立即检测按键(如按下,菜单立即显示)或者用户可以按下一个键然后点击回车吗?在C++中这样做的一个便携方法可能是使用<代码> NCurss<代码>库。ῥεῖ 谢谢你的建议!我一直喜欢使用ncurses的想法,尽管我认为到目前为止,ncurses的Windows端口还没有发展到什么程度:(@blackrandt我希望它能立即检测到keypress@darwin80当然,ncurses可以很好地与windows终端配合使用。可移植性是它的全部目的。这个答案假设OP是在windows上的,这在原始问题中没有指定。这在windows以外的系统上不起作用。OP中是否有关于这一点的证据?@jjo通常的做法是在回答问题之前询问OP关于评论中的澄清。很容易获得足够的声誉来评论问题。@jjo感谢您的回答,我会尽快尝试测试这种方法!@πάνταῥεῖ 此用户是