C++ C++;getkey()和kbhit()在错误的窗口上运行

C++ C++;getkey()和kbhit()在错误的窗口上运行,c++,windows,keyboard,C++,Windows,Keyboard,我正在编写一个MicrosoftWindows程序,该程序在控制台窗口中启动,然后生成一个单独的gui窗口以在中执行directx渲染 当焦点在directx窗口上时,我试图获取键盘字符,但是当我键入字符时,getkey没有显示我点击了任何东西。在一些混乱之后,我发现如果我在按下directx窗口中的一个键后将焦点切换到控制台窗口,我的程序就会记录键盘点击。我是否需要对directx窗口进行一些特殊初始化才能捕获键盘点击?我怀疑kbhit只在控制台(stdin)上侦听 调用API以轮询键盘状态(

我正在编写一个MicrosoftWindows程序,该程序在控制台窗口中启动,然后生成一个单独的gui窗口以在中执行directx渲染


当焦点在directx窗口上时,我试图获取键盘字符,但是当我键入字符时,getkey没有显示我点击了任何东西。在一些混乱之后,我发现如果我在按下directx窗口中的一个键后将焦点切换到控制台窗口,我的程序就会记录键盘点击。我是否需要对directx窗口进行一些特殊初始化才能捕获键盘点击?

我怀疑kbhit只在控制台(stdin)上侦听

调用API以轮询键盘状态(每帧),而不是使用您提到的其他函数。这将可能是你想要的,并将工作良好。这是我在游戏工作室工作时用的

如果您想要比轮询更受事件驱动,并且您有一个消息泵(GetMessage/DispatchMessage循环),只需在DirectX窗口的窗口句柄(hwnd)上侦听和的某些组合即可


如果您需要焦点增益/丢失检测,请查找/或直接使用()。

使用窗口消息,而不是不推荐使用的函数!他们在这里的目的完全不同。您拥有自己的GUI窗口,因此可以通过标准窗口消息处理所有输入。