Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何将函数回调传递给已创建的窗口?(窗口)_Windows_Callback - Fatal编程技术网

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

Windows 如何将函数回调传递给已创建的窗口?(窗口),windows,callback,Windows,Callback,我有一个函数回调来处理窗口的事件,比如WM_SIZE。现在,如何将函数回调传递给打开的窗口?(用于命令行应用程序) 我见过RegisterClassEx,但我认为它用于创建新窗口。如果要处理现有窗口的windows消息,您有两个选项: 子类化。每个窗口都有一个“window proc”回调函数(您指的是该函数),您可以使用SetWindowLongPtr将其替换为GWLP\u WNDPROC。然后,在您自己的windowproc中,您需要将消息转发到您替换的原始消息。但也有一些限制: 无法安全地

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


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

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

子类化。每个窗口都有一个“window proc”回调函数(您指的是该函数),您可以使用
SetWindowLongPtr
将其替换为
GWLP\u WNDPROC
。然后,在您自己的windowproc中,您需要将消息转发到您替换的原始消息。但也有一些限制:

  • 无法安全地取消窗口的子类化
  • 您只能在自己的流程中执行此操作

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

    你的问题不清楚。你想做什么?我想知道窗口什么时候改变了大小,所以我创建了回调函数来处理它。现在,我需要将它传递到程序运行的窗口。