如何获得鼠标单击的位置(以x-y坐标像素为单位)? 在C++(Win32)中,如何获取鼠标点击屏幕上的(x,y)坐标?< /p> < p>你可以调用鼠标以获得鼠标位置和历史记录。或者,如果您有权访问wndproc,只需检查的LPRAM或类似消息的x、y坐标即可。

如何获得鼠标单击的位置(以x-y坐标像素为单位)? 在C++(Win32)中,如何获取鼠标点击屏幕上的(x,y)坐标?< /p> < p>你可以调用鼠标以获得鼠标位置和历史记录。或者,如果您有权访问wndproc,只需检查的LPRAM或类似消息的x、y坐标即可。,c++,winapi,mouse,C++,Winapi,Mouse,Visual C++: C++: 假设使用普通Win32 API,请在处理程序中使用此API: 现在,您将获得鼠标指针在坐标中的x和y位置。XPO和YPO的长度应为: bool find(long x,long y); 在内部,检查XPO和YPO是否位于屏幕坐标中的任何对象之下 POINT p; //You can use this to store the values of x and y coordinates 现在假设您将通过单击鼠标左键来处理此问题 case WM_L

Visual C++:

C++:


假设使用普通Win32 API,请在处理程序中使用此API:

现在,您将获得鼠标指针在坐标中的x和y位置。XPO和YPO的长度应为:

bool find(long x,long y);
在内部,检查XPO和YPO是否位于屏幕坐标中的任何对象之下

POINT p; //You can use this to store the values of x and y coordinates
现在假设您将通过单击鼠标左键来处理此问题

    case WM_LBUTTONDOWN:
        p.x = LOWORD(lParam); //X coordinate
        p.y = HIWORD(lParam); //Y coordinate
        /* the rest of your code */
        break;

这是正确的答案,因为它告诉您用户单击鼠标时鼠标的位置,而不是您处理消息时鼠标的位置(它可能已移动)。来自MSDN WM_LBUTTONDOWN的备注:请勿使用LOWORD或HIWORD宏提取光标位置的x和y坐标,因为这些宏在具有多个监视器的系统上返回不正确的结果。带有多个监视器的系统可以有负的x坐标和y坐标,LOWORD和HIWORD将坐标视为无符号量。@user2120666我不知道,在MSDN的一些示例中仍然使用它(即,当在windows 7或windows 10中进行DPI缩放时,这会起作用吗。例如,如果初始DPI缩放值为150%,然后我们将其设置为100%,此方法仍然有效吗?我在一个应用程序中遇到了一个问题,这不起作用。当我注销并再次登录时,一切正常。
POINT p; //You can use this to store the values of x and y coordinates
    case WM_LBUTTONDOWN:
        p.x = LOWORD(lParam); //X coordinate
        p.y = HIWORD(lParam); //Y coordinate
        /* the rest of your code */
        break;