0

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

我见过 RegisterClassEx 但我认为它用于创建新窗口。

4

1 回答 1

0

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

子类化。每个窗口都有一个“window proc”回调函数(您指的是),您可以使用SetWindowLongPtrwith替换它GWLP_WNDPROC。然后在您自己的窗口过程中,您需要将消息转发到您替换的原始消息。但是有一些限制:

  1. 您不能安全地取消子类窗口。
  2. 您只能在自己的流程中执行此操作。

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

于 2012-09-12T09:18:08.830 回答