首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只在被按下时才按下键,在释放和再按时再按一次。

只在被按下时才按下键,在释放和再按时再按一次。
EN

Stack Overflow用户
提问于 2021-05-09 16:25:00
回答 2查看 95关注 0票数 0

我试图得到的关键输入,只有当它是按下,就像不是,如果我们按下它。

我希望它停止输入,直到它再次“释放”和“按下”,但我无法做到。

我的代码:

代码语言:javascript
复制
while(isRunning)
{
    if(GetKeyState('K') & 0x8000) 
    {
        std::cout << "K is Pressed" << std::endl;
    }
}

按下时的输出:

K压 K压 K压 K压 K压 K压 K压 K压 K压 K压

但我想要的是

K压

当我再次“发布”和“按”它时,我希望它再次打印出来。

EN

回答 2

Stack Overflow用户

发布于 2021-05-09 16:30:53

如果只想通知状态更改,则不应该在循环中调用GetKeyState。相反,您应该响应WM_KEYDOWNWM_KEYUP消息。

但是,在Windows控制台应用程序中,您不能处理控制台窗口的窗口消息,因为应用程序不拥有该窗口。因此,您必须使用ReadConsoleInput并处理KEY_EVENT_RECORD事件。有关为什么无法为控制台应用程序创建标准窗口消息循环的更多信息,请参见这条线

票数 1
EN

Stack Overflow用户

发布于 2021-05-09 16:45:20

我不知道您使用的是什么库,但是获取键按下的思想是创建一个类型为bool的数组,如bool lastKeys[256];,并记录最后一个帧中按下的所有键,每次按下键或每个帧时都需要更新它……然后,当您想按下键时,您需要询问if (GetKeyState('k') && !lastKeys['k'])库是否有此特性--这可能是幕后的操作方式。尽量让它更有效率。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67459957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档