La creación de subclases es el proceso anular un procedimiento de ventana que Windows asigna de forma predeterminada.
Esta tecnología se utiliza si se requiere dotar a la ventana de alguna reacción específica a un mensaje de Windows. Con la ayuda de la subclasificación, puede organizar el control de entrada, bloqueando el cierre de la ventana. En general, lo más importante aquí es que, si es necesario, el programador tiene control total sobre el comportamiento de la ventana.
Windows tiene una selección bastante amplia de controles, pero es posible que se encuentre en una situación en la que necesite personalizar el comportamiento de un control. Y aquí hay una complicación: el procedimiento que Windows asigna a un control no se puede cambiar por sí mismo. Hay dos maneras:
Las desventajas del primer enfoque son que, de hecho, el programador se ve obligado a "reinventar la rueda" nuevamente. Sin embargo, la ventaja de crear subclases es que permite al programador concentrarse solo en los mensajes de Windows que realmente necesita y pasar el resto al procedimiento de ventana estándar.
El principio de su funcionamiento es bastante simple: al crear una ventana, Windows escribe la dirección del procedimiento del controlador [1] en el campo lpfnWndProc de la clase de ventana WNDCLASSEX . Windows proporciona al programador la función SetWindowLong , que puede cambiar varios campos de la clase, incluida la dirección del controlador. Al mismo tiempo, el procedimiento de ventana estándar no desaparece en ninguna parte, su dirección está contenida en el campo defwindowproc , y si nuestro procedimiento de ventana recibe un mensaje de ventana que no requiere la intervención del programador para su procesamiento, entonces nuestro procedimiento de ventana lo pasa al procedimiento de ventana estándar.
Surgirán problemas al usar esta tecnología si la aplicación se programa usando VCL , OWL o MFC . Esto se debe al orden en que se manejan los mensajes de Windows en estas bibliotecas [2] .