【问题标题】:Console get key press w/o windows messages c++控制台获取不带 Windows 消息的按键 c++
【发布时间】:2010-11-20 01:31:54
【问题描述】:

有没有办法在不使用 Windows 消息或 std::cin 流的情况下获得控制台中的最后一次按键?我听说标准库中有一个函数。解决方案最好尽可能便携。提前感谢您的帮助。

【问题讨论】:

  • 你关心最后一个 character 还是最后一个 keypress(例如,包括 shift、control 和箭头键等修饰符)?如果是按键,那么在便携性方面你就很不走运了。

标签: c++ console keypress


【解决方案1】:

您是否考虑过使用像 pdcurses 这样的 curses 库?这就是我所知道的唯一一个可以进行控制台管理的跨平台库。

【讨论】:

    【解决方案2】:

    不是很便携,但您甚至可以从 Windows 下的控制台应用程序使用 GetAsyncKeyState 访问当前键状态。 更具技术性且同样特定于 Windows 的方法是使用 SetWindowsHookEx 将键盘挂接到系统中的回调中,该回调仅存储最后按下的键。

    但是您的基本问题:控制台 + 可移植性 - 似乎暗示 cin 是您最好的选择 - 您需要 cin 不提供的什么?

    【讨论】:

      【解决方案3】:

      conio.h,但它不是技术标准。在 Linux 上,我的第一个 Google 搜索建议是 termios.h

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多