在CLR中的GetCursorPos之后得到相对位置?

时间:2015-03-29 14:32:35

标签: c# c++ c mouseevent clr

截至目前,我已成功获得x和y坐标。

在面板代码中。

   POINT cursorPos;
                GetCursorPos(&cursorPos);
                int x;
                int y;
                x = cursorPos.x;
                y = cursorPos.y;
                cout << x << endl;
                cout << y << endl;

然而,我得到的x和y坐标是全局的,也就是说,不在我想从中获取坐标的面板中。

我知道ClientToScreen需要将x和y坐标更改为相对位置,但我如何在 C ++ / CLR中执行此操作?

因为ClientToScreen需要一个句柄,而C ++ / CLR中没有这个句柄(请原谅我,如果这个点错了)。谢谢:))

更新:我尝试将我的面板投射到hwnd中,但仍然无法正常工作。

HWND hwnd = static_cast<HWND>(this->panel1->Handle.ToPointer());

1 个答案:

答案 0 :(得分:0)

您获得全局坐标,因为GetCursorPos()是相对于屏幕的。要将其转换为应用程序坐标,只需在ScreenToClient()填充的POINT结构上使用GetCursorPos()即可。

请查看此处的文档:https://msdn.microsoft.com/en-us/library/windows/desktop/dd162952%28v=vs.85%29.aspx