gpt4 book ai didi

c++ - 等待 Win32 应用程序中的特定键

转载 作者:行者123 更新时间:2023-11-28 03:11:53 24 4
gpt4 key购买 nike

在我的程序中的某个时刻,我想等待用户按下 [return] 或 [escape]。这就是我所做的:

while(1)
{
Sleep(100);
if( GetAsyncKeyState( VK_RETURN ) )
{
//do something
}
if( GetAsyncKeyState( VK_ESCAPE ) )
{
//do something else
}
}

但是(仅在发布版本中)在等待大约 2 秒后,Windows 说它没有响应,并且崩溃了。我该怎么办?

最佳答案

您的应用程序是一个 GUI 子系统应用程序,其主线程必须定期抽取其消息队列。您没有这样做是因为您进入了一个寻找特定键状态的紧密循环。因为您不为您的队列提供服务,系统断定您的应用程序已损坏并重影您的窗口。

在我们继续讨论如何正确执行之前,您现有的方法在其他方面有问题。假设在 Sleep(100) 期间按下并释放该键。然后你错过了那个事件。或者假设您的应用程序不在前台。然后它响应用于其他应用程序的按键。

要解决这个问题,您只需要让您的正常消息循环处理和发送消息即可。当您收到相应 key 的 WM_KEYDOWN 消息时,您可以做出相应的 react 。

以预期的方式使用消息循环不仅可以解决您在问题中观察到的行为,还可以解决我上面描述的问题。

关于c++ - 等待 Win32 应用程序中的特定键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18217345/

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