C++ 当我在VS中左键单击控制台时,为什么控制台程序被中断?
我在VS中编写了一个控制台程序来响应鼠标事件。我想在单击时打印一些内容,因此我编写以下代码:C++ 当我在VS中左键单击控制台时,为什么控制台程序被中断?,c++,visual-studio,click,mouseevent,console-application,C++,Visual Studio,Click,Mouseevent,Console Application,我在VS中编写了一个控制台程序来响应鼠标事件。我想在单击时打印一些内容,因此我编写以下代码: int keyPressed(int key){ return (GetAsyncKeyState(key) & 0x8000 != 0); } void Mouse::click(){ while (1) { if (keyPressed(VK_LBUTTON) || keyPressed(VK_RBUTTON)){ cout << "click\n";
int keyPressed(int key){
return (GetAsyncKeyState(key) & 0x8000 != 0);
}
void Mouse::click(){
while (1)
{
if (keyPressed(VK_LBUTTON) || keyPressed(VK_RBUTTON)){
cout << "click\n";
}
}
}
int main(){
Mouse mouse;
while (1){
mouse.click();
}
}
int键按下(int键){
返回(GetAsyncKeyState(键)&0x8000!=0);
}
无效鼠标::单击(){
而(1)
{
如果(按下键(VK|U按钮)|按下键(VK|U按钮)){
cout,因此在&
生效之前计算0x8000!=0
使用括号--将该行更改为:
return (GetAsyncKeyState(key) & 0x8000) != 0;
右键单击没有问题。我认为这是因为左键鼠标用于高亮文本,然后单击Enter
键复制所选文本。无论执行什么操作,单击鼠标左键时控制台输出始终停止。无关问题:while(1)
循环效率非常低,它试图劫持整个cpu核心,并在其中循环。至少将Sleep(10)
放在其中。但您确实需要一个窗口程序(创建“Win32 project”而不是“Win32 console project”)要制作正确的GUI程序,可以通过单击窗口标题>编辑>标记左上角的图标更明确地完成。这有助于允许用户从控制台窗口复制/粘贴文本。简单的鼠标单击是否自动进入编辑模式是一项设置。单击图标>属性>选项选项卡>取消选中“快速编辑模式”复选框。@BarmakShemirani我理解。谢谢!@HansPassant我工作了!非常感谢!结果没有改变。但是我发现如果我左键单击控制台以外的地方,它会打印“单击”。