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

时间:2012-09-12 09:06:39

标签: windows callback

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

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

1 个答案:

答案 0 :(得分:0)

如果要处理现有窗口的Windows消息,可以选择以下几种方法:

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

  1. 您无法安全地取消子类化窗口。
  2. 您只能在自己的流程中执行此操作。
  3. Windows挂钩,使用SetWindowsHookEx。如果要查看其他窗口的消息,请使用此选项 - 您可以在给定线程或系统范围内查看Windows的所有消息。有不同类型的钩子允许您捕获不同类型的消息。这是一个非常沉重的方法;最后的办法,这样你就不会不必要地陷入困境。