C++ 如何在C+中检测当前选定/活动界面中是否启用了绑定+;

C++ 如何在C+中检测当前选定/活动界面中是否启用了绑定+;,c++,if-statement,focus,keyboard-events,typing,C++,If Statement,Focus,Keyboard Events,Typing,在Windows7(我不确定其他操作系统)中,当你在网页上时,按空格键会在页面上向下滚动几个像素。但是当你在一个可以输入的界面中(比如输入元素、文本区域、单词编辑器、代码编辑器、搜索栏等等),按空格键显然会输入一个空格 类似地,当所有打开的窗口或菜单最小化,并且您正在查看桌面时,您按下字母键,而不是在某处键入字母时,会发出嘟嘟声 这表明可以“检测”输入功能的可用性。如果它可以被检测到,它很可能是用C++来完成的。 我不知道这叫什么。我试图通过谷歌找到答案,但我得到的一切似乎都与此无关。我可能没有

在Windows7(我不确定其他操作系统)中,当你在网页上时,按空格键会在页面上向下滚动几个像素。但是当你在一个可以输入的界面中(比如输入元素、文本区域、单词编辑器、代码编辑器、搜索栏等等),按空格键显然会输入一个空格

类似地,当所有打开的窗口或菜单最小化,并且您正在查看桌面时,您按下字母键,而不是在某处键入字母时,会发出嘟嘟声

这表明可以“检测”输入功能的可用性。如果它可以被检测到,它很可能是用C++来完成的。 我不知道这叫什么。我试图通过谷歌找到答案,但我得到的一切似乎都与此无关。我可能没有使用正确的关键字

无论是什么,我正在创建一个C++程序,我需要能够检测它(在IF条件下)。像这样的

if (/*typing can be done*/) {
//Do something..........
}
还是这个

if (/*typing can NOT be done*/) {
if( GetKeyState(VK_SPACE) & 0x8000 ) {
//Do something..........
}
}
我需要能够在本地做到这一点。不特定于特定的控制台窗口或UI


如果你能以任何方式帮助我解决这个问题,那么请你这么做。请随意进行或建议相关编辑,以改进此问题,使其不那么含糊、更详细、更切中要害。

您描述的功能属于运行窗口的程序,而不是操作系统(尽管操作系统将至少部分地最终为该功能提供动力). 程序能够检测到击键,这并不奇怪,因为否则你将无法使用键盘向计算机输入任何字符

但是,您不能仅使用
if
语句“检测”随机事件“如果”不是“当”。您的计算机不会重复检查程序中的所有
if
语句,并在其中一个语句匹配时跳转到代码中的该位置。想象一下混乱

一个程序足够复杂,以至于有一个图形界面,几乎可以肯定它有一个“事件循环”,可以是在它自己的代码中,也可以是隐藏在API调用中的(就像本机Windows应用程序一样);这种事件循环通常轮询发送到程序管理的窗口的密钥。如果您没有事件循环(如果您的操作系统无法在击键未处理时生成“信号”),则必须创建一个事件循环


确切的细节超出了堆栈溢出答案的范围,但通过向您介绍如何创建图形程序的教科书,我可以让您了解在这些情况下如何处理输入和输出。

目前我不知道是否要将您的答案标记为正确(由于我自己的知识不全面,更重要的是,这可能会阻止其他人发布答案)。我不能投票,即使我想(我的名声是ps)。你认为可以“检测”一直在键入界面(如我现在键入的注释框)中闪烁的光标吗@javabhai:您必须更具体地了解您的需求。通常,拥有一些文本小部件的程序知道哪个文本小部件具有“焦点”.但是你能准确地检测到闪烁的插入符号吗?或者它什么时候闪烁?不正常,不。然后,我想不出一个理由。你完全正确地不接受这个答案-现在还为时过早!错误的结论。如果你听到一声嘟嘟声,这一切意味着没有任何窗口程序能够处理键盘输入。它不会我会告诉你一个窗口过程最终是如何利用键盘输入的。总之,你和操作系统都无法检测到“输入功能”。