在 CLR 中的 GetCursorPos 之后获取相对位置?

get relative position after GetCursorPos in 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());

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

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