c++ - 窗口处理管理器

标签 c++ windows winapi window-managers z-order

我有一个运行三个应用程序的 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/

相关文章:

c++ - 使用形状参数时,如何灵活地使用可以处理 2D 和 3D 形状的方法参数

c++ - 在结构 vector 中查找元素

python - 在 Linux 上运行 Tensorflow 代码时出错

检查 Windows 对象 DACL 中是否存在 ACE

c++ - 如何使用SetWindowLong来寻址类成员函数?

c++ - 一般程序布局的良好资源(最好是 Python 或 C++)

c++ - 跨平台 C++ 动态库插件加载器

javascript - 自动从网络打印 Excel 文件

mysql - 如何指定 MariaDB Windows 服务的描述?

c++ - 常见的可写应用程序文件放在哪里?