c++ getkey()和kbhit()作用于错误的窗口
C++ getkey() and kbhit() acting on wrong window
我正在编写一个microsoft windows程序,它从控制台窗口开始,然后生成一个单独的gui窗口来进行一些直接渲染。
我试图获得键盘字符,而焦点是在directx窗口,但当我键入字符,getkey不注册,我击中任何东西。经过一番折腾之后,我发现如果我在directx窗口中按下一个键后将焦点更改为控制台窗口,我的程序会记录键盘敲击。我是否需要对directx窗口进行一些特殊的初始化,以便能够捕获键盘敲击?
我怀疑kbhit只监听控制台(stdin)。
调用GetKeyboardState API来轮询键盘状态(每帧),而不是使用你提到的其他函数。这可能是你想要的,并且会很好地工作。这是我在游戏工作室工作时所使用的方法。
如果你想更多的事件驱动比轮询,你有一个消息泵(GetMessage/DispatchMessage循环),只是可以监听WM_CHAR, WM_KEYDOWN和WM_KEYUP的一些组合在你的DirectX窗口的窗口句柄(hwnd)。
如果您需要焦点增益/损失检测,请查找WM_SETFOCUS/WM_KILLFOCUS或仅使用GetFocus()。
相关文章:
- [longjmp/setjmp]c++ 相同的代码窗口有异常 Linux 没有错误并且运行良好
- 可能的Qt5错误:调用setFixedSize()禁用主窗口的关闭按钮(在Win7下)
- OpenGL C++(制作简单窗口时抛出错误)
- 创建进程 API 失败,在窗口 122 上出现错误代码 10
- _CrtIsValidHeapPointer(块)错误在应用单例-帕特恩后退出主窗口时引发
- C++,弹出调试断言失败窗口,我得到矢量迭代器不兼容的错误运行时
- 使用程序集嵌入数据时"Undefined reference"错误,使用适用于窗口的 mingw-w64 编译(COFF 而不是 ELF)
- Visual Studio 2019 不会打开包含源文件的窗口,也不会定位为出现错误的行
- 将 c++ 程序语法错误重定向到窗口中的文件
- 咖啡窗口的错误
- SFML 中的分段错误 调用 sf::窗口::关闭后
- 提升 1.58.0 窗口进程.h 错误
- 模型对话框移动到主窗口后面的Qt错误
- SDL窗口的错误
- QT:错误 ["*"令牌之前的预期")",并且主窗口未命名类型]
- MPI_Win_free会导致无效窗口错误
- Mingw makefile 编译错误窗口
- wxwidgets 错误窗口.H 已包括在内
- Qt链接器错误窗口
- _mkdir给出错误窗口