子窗口能知道父窗口何时被移动吗?

本文关键字:窗口 移动 何时 | 更新日期: 2023-09-27 18:07:33

我开发了一个从第三方应用程序加载的dll。
应用程序不提供我任何事件,如WM_SIZE, WM_MOVE等。
我的dll显示一个窗口(对话框),它是主应用程序的子窗口。
我想让我的窗口在主应用程序调整大小或移动时移动。
我怎样才能做到这一点呢?正如我所说,主应用程序不提供任何WM_SIZE或WM_MOVE事件。是否有一种方法可以使用应用程序句柄订阅应用程序的事件?
或者在没有这些事件的情况下,子窗口可以知道主应用程序何时移动或调整大小?

子窗口能知道父窗口何时被移动吗?

如果一个窗口有一个样式WS_CHILD,它永远不会收到一个WM_MOVE或WM_SIZE消息当父移动!

为什么呢?它的位置(相对于父元素)和大小不会改变。此外,操作系统Windows也会注意到任何必须通过打开窗口部分而发生的重新绘制。

所以当你说窗口应该和父窗口一起移动而它没有,那么窗口就不是父窗口的子窗口。(样式WS_CHILD)。用spy++重新检查一下。或者你只有一扇自己的窗户。(你的问题不够详细)。

如果你有一个非WS_CHILD窗口,并且你希望它与另一个窗口一起移动,你可以使用计时器来重新检查其他窗口是否移动。或者,如果窗口处于相同的进程中,您可以子类化窗口,并在父窗口接收WM_SIZE/WM_MOVE时将自己的消息发布到您的窗口。