截至目前,我已成功获得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());
答案 0 :(得分:0)
您获得全局坐标,因为GetCursorPos()
是相对于屏幕的。要将其转换为应用程序坐标,只需在ScreenToClient()
填充的POINT结构上使用GetCursorPos()
即可。
请查看此处的文档:https://msdn.microsoft.com/en-us/library/windows/desktop/dd162952%28v=vs.85%29.aspx