gpt4 book ai didi

c++ - 获取鼠标按钮单击

转载 作者:行者123 更新时间:2023-12-03 07:03:47 24 4
gpt4 key购买 nike

我正在尝试检测鼠标按钮点击 我在 Microsoft 网站上查看了一些文档,发现我们可以使用 GetKeyState 函数来检测按钮点击,这是我的代码。

不确定我做错了什么,但当我按下按钮时,我的输出中没有打印任何内容。

#include <windows.h>
#include <iostream>
#include "stdafx.h"

using namespace std;

void CheckMouseButtonStatus()
{
//Check the mouse left button is pressed or not
if ((GetKeyState(VK_LBUTTON) & 0x80) != 0)
{
cout << "left button pressed" << endl;
}
//Check the mouse right button is pressed or not
if ((GetKeyState(VK_RBUTTON) & 0x80) != 0)
{
cout << "right button pressed" << endl;
}
}

刚刚找到一个 friend 正在谈论它的 youtube 视频,我尝试了它仍然没有输出任何内容

int main()
{
//Check the mouse left button is pressed or not
if ((GetAsyncKeyState(VK_LBUTTON) & 0x80) != 0)
{
cout << "left button pressed" << endl;
}
//Check the mouse right button is pressed or not
if ((GetAsyncKeyState(VK_RBUTTON) & 0x80) != 0)
{
cout << "right button pressed" << endl;
}
}

这个有效但有并发症 -

int main()
{
while (true) {
//Check the mouse left button is pressed or not
if (GetAsyncKeyState(VK_LBUTTON))
{
cout << "left button pressed" << endl;
}
//Check the mouse right button is pressed or not
if (GetAsyncKeyState(VK_RBUTTON))
{
cout << "right button pressed" << endl;
}
}

}

最佳答案

使用GetAsyncKeyState()并使用按位与检查是否设置了最低有效位,这表示新的按键按下,而不是之前检测到的按键。

#include <windows.h>
#include <iostream>

int main()
{
while (true)
{
//Check the mouse left button is pressed or not
if (GetAsyncKeyState(VK_LBUTTON) & 1)
{
std::cout << "left button pressed" << std::endl;
}
//Check the mouse right button is pressed or not
if (GetAsyncKeyState(VK_RBUTTON) & 1)
{
std::cout << "right button pressed" << std::endl;
}

}
return 0;
}

GetAsyncKeyState 非常适合简单的测试和学习目的,但最好使用普通的 Windows 消息队列进行任何输入检测。请记住,GAKS 是全局性的,它会检测所有进程上的按键操作,而不仅仅是您的进程。阅读 MSDN 上的说明,因为有时这会导致问题。

关于c++ - 获取鼠标按钮单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61668571/

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