移动父窗口时子窗口是否可以知道?

时间:2015-08-13 06:31:05

标签: c# user-interface mfc

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

1 个答案:

答案 0 :(得分:4)

如果某个窗口的样式为WS_CHILD,则当父窗子移动时,它永远不会收到WM_MOVE或WM_SIZE消息!

为什么要这样?它的位置(相对于父母)及其大小不会改变。 OS Windows也会通过发现窗口的各个部分来处理必须进行的重新绘制。

因此,当你说窗口应该与父母一起移动时,它并不比窗口不是父母的孩子。 (样式WS_CHILD)。用Spy ++重新检查一下。或许你只有一个拥有的窗口。 (你的问题不够详细)。

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