如何在Windows环境中获取鼠标单击的坐标(相对于窗口)

时间:2011-02-04 18:54:42

标签: c++ windows

使用Windows环境窗口HWND,如何在该窗口中获得鼠标单击的坐标?

编辑:抱歉模糊不清。我有一个HWND对象,我正在对它进行一些图像分析。我希望能够点击HWND对象中显示的图像上的某个点并打印出我的点击的x,y坐标,以及x和y坐标处图像的一些属性

2 个答案:

答案 0 :(得分:2)

函数ScreenToClientClientToScreen在屏幕和客户端坐标系之间进行转换。鼠标消息以客户端相对坐标传递给窗口。

但是,您的问题并不十分清楚,所以如果我没有提供您正在寻找的答案,请编辑您的问题以准确说明您的目标。

答案 1 :(得分:1)

David Heffernan已经给出了答案的基础知识。更完整,这是完整的程序:

每个窗口都有一个唯一的HWND,它是内部数据结构的句柄。该结构包含一个指向WindowProc(窗口过程)的函数指针。此窗口过程负责处理WM_LBUTTONUP等消息。每个窗口消息都有两个相关参数,历史上称为lparamwparamlparam WM_LBUTTONUP参数包含您想要的x和y坐标。您可以通过GET_X_LPARAM(lparam)GET_Y_LPARAM(lparam)

检索它们

Windows支持为单个WindowProc链接多个HWND。这称为"subclassing"