Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 当我在VS中左键单击控制台时,为什么控制台程序被中断?_C++_Visual Studio_Click_Mouseevent_Console Application - Fatal编程技术网

C++ 当我在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";

我在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 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我工作了!非常感谢!结果没有改变。但是我发现如果我左键单击控制台以外的地方,它会打印“单击”。