从win32k系统(Windows本身)发送WM_NCHITTEST

Send WM_NCHITTEST from win32k system (Windows itself)

本文关键字:发送 WM NCHITTEST 本身 win32k 系统 Windows      更新时间:2023-10-16

所以我有一个窗口,有一个子窗口占据了整个窗口。

SendMessageW(MainWindow, WM_NCHITTEST, 0, MAKELPARAM(x, y));

当鼠标进入子窗口时,上面的代码被发送到主窗口。但是,从MainWindow的WindowProc返回的结果只是由SendMessageW返回,然后被丢弃。

因此,拖动主窗口或调整主窗口大小等操作将不起作用,因为 Windows 本身不会发送WM_NCHITTEST消息。子窗口是。

那么,如何强制窗口随时向窗口发送WM_NCHITTEST消息,以便可以执行拖动窗口等操作呢?

谢谢。

我能想到的方法是通过SetWindowsHookEx安装消息钩子,然后使用SendMessage将消息转发到 MainWindow。

好的,我找到了如何让它工作的方法。

您需要设置WS_EX_TRANSPARENT然后禁用该窗口。我用EnableWindow(MainWindow, FALSE);禁用了它

但它现在可以工作了,最热门的消息将转到它下面的主窗口。