【发布时间】:2016-05-25 09:52:07
【问题描述】:
在MSDN 网站上,我发现以下内容:
使用 GWLP_WNDPROC 索引调用 SetWindowLongPtr 会创建一个 用于创建窗口的窗口类的子类。一个应用程序 可以子类化系统类,但不能子类化窗口类 由另一个进程创建。 SetWindowLongPtr 函数创建 窗口子类通过改变与一个关联的窗口过程 特定窗口类,导致系统调用新窗口 程序而不是前一个程序。申请必须通过任何 新窗口过程未处理的消息到前一个 通过调用 CallWindowProc 的窗口过程。这允许 应用程序来创建一系列窗口过程。
这是否意味着,每次我用GWLP_WNDPROC 调用SetWindowLongPtr 时,都会创建新的子类,或者如果将相同的过程作为参数多次传递,Windows 是否足够聪明,只能创建一次子类?
【问题讨论】:
-
窗口子类不是真实的东西,它只是我们谈论的一个概念,因为它比谈论改变窗口过程更容易。
-
所以它实际上并没有调用RegisterClass之类的东西?
-
不,它没有。它所做的只是更改窗口的窗口过程,正如您对名称所期望的那样。