我有一个运行三个应用程序的 Windows 机器。当应用程序启动时,每个应用程序都会创建一个无边框窗口,该窗口的位置使其以特定方式重叠。
目前,当我单击底部窗口上的控件时,它会到达窗口堆栈的顶部。
即使窗口接收到输入,我也需要确保每个窗口都保持其在窗口堆栈中的顺序。
我在想我需要编写某种简单的窗口管理器来维护窗口的正确 Z 顺序。
问题是,我需要知道某个特定窗口的位置是否发生了变化。我发现有一个 WM_WINDOWPOSCHANGING 消息,但我的理解是这个消息被发送到位置已经改变的窗口。
我需要以某种方式通知我的窗口管理器应用程序 Z 顺序已更改。
有什么方法可以捕获所有 WM_ 消息并确定该消息是否适用于我希望控制的窗口之一?
最佳答案
与其尝试将 DLL 注入(inject)到每个正在运行的应用程序中的 MSalter 方法,不如考虑安装 WH_CBT Windows Hook 。在您的 CBTProc 中,当您获得您关心的三个应用程序窗口句柄的 HCBT_MOVESIZE 时,返回 0。
阅读 MSDN 以获取关于 CBTProc 的文档和 SetWindowsHookEx .
关于c++ - 窗口处理管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2333233/