gpt4 book ai didi

C++ getkey() 和 kbhit() 作用于错误的窗口

转载 作者:行者123 更新时间:2023-11-28 07:49:10 26 4
gpt4 key购买 nike

我正在编写一个在控制台窗口中启动的 Microsoft Windows 程序,然后生成一个单独的 gui 窗口以在其中进行一些 directx 渲染。

我试图在焦点位于 directx 窗口时获取键盘字符,但是当我键入字符时,getkey 没有记录我点击了任何内容。经过一番折腾后,我发现如果在 directx 窗口中按下某个键后将焦点切换到控制台窗口,我的程序会记录键盘命中。我是否需要对 directx 窗口进行一些特殊的初始化才能捕获键盘点击?

最佳答案

我怀疑 kbhit 只在控制台(标准输入)上监听。

调用 GetKeyboardState用于轮询键盘状态(在每一帧上)而不是使用您提到的其他功能的 API。这可能就是您想要的,并且可以正常工作。这是我在游戏工作室工作时使用的。

如果你想要更多的事件驱动而不是轮询,并且你有一个消息泵(GetMessage/DispatchMessage 循环),只需监听 WM_CHAR 的一些组合, WM_KEYDOWN , 和 WM_KEYUP在 DirectX 窗口的窗口句柄 (hwnd) 上。

如果您需要焦点增益/损失检测,请查找 WM_SETFOCUS/WM_KILLFOCUS或者只使用 GetFocus ().

关于C++ getkey() 和 kbhit() 作用于错误的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14208615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com