如何将函数回调传递到创建的窗口?(Windows)



我有一个函数回调来处理窗口的事件,如WM_SIZE。现在,如何将函数回调传递到打开的窗口?(它用于命令行应用程序)。

我看过RegisterClassEx,但我认为它用于创建一个新窗口。

如果您想处理现有窗口的窗口消息,您有两个选项:

子类。每个窗口都有一个"windowproc"回调函数(您所指的),您可以使用SetWindowLongPtr将其替换为GWLP_WNDPROC。然后,在您自己的窗口进程中,您需要将消息转发到您替换的原始消息。但也有一些局限性:

  1. 您无法安全地取消窗口的子类
  2. 你只能在自己的过程中做到这一点

Windows挂钩,使用SetWindowsHookEx。如果你想窥探其他窗口的消息,可以使用它——你可以在给定线程或系统范围内查看窗口的所有消息。有不同类型的钩子可以让您捕获不同类型的消息。这是一个相当沉重的方法;这是最后的手段,这样你就不会不必要地让系统陷入困境。

最新更新