我对 C++ 并不陌生,但是 Win32 编程的概念对我来说相当新。无论如何,当 WM_NCHITTEST 消息通过 WndProc 传递时,我在获取 X 和 Y 坐标时遇到了一些麻烦。为了立即尝试获取它们,我正在使用以下代码:
int x = LOWORD(lParam);
int y = HIWORD(lParam);
我不太确定它是否有效,但我相信它是。我在某处读到这实际上返回监视器本身指针的 x 和 y 坐标,而不是相对于应用程序。
当我在试图弄清楚如何将其转换为相对于应用程序的坐标时进行广泛的谷歌搜索时,我遇到了这种方法(或函数。我不再使用 java 了:P):
Point relativePos = theControl.PointToClient(pos);
其中 pos 是 x 和 y 坐标。我非常想尝试这段代码,但是我遇到了多个问题。
首先,点在 C++ 中不起作用。我已经尝试过它们,但它们不起作用。其次,在 Win32 中,我不相信 Point 是定义的。我可以找到 POINT,但我不确定这是同一件事。最后,老实说,我不太确定如何定义这一点。
为了解释为什么我需要这个,我试图让窗口只能拖动窗口的前 50 个像素。
case WM_NCHITTEST:
hit = DefWindowProc(hWnd, message, wParam, lParam);
if(y < 50)
return HTCAPTION;
break;
无论如何,非常感谢您的帮助。