Subclasificación

La creación de subclases es el proceso  anular un procedimiento de ventana que Windows asigna de forma predeterminada.

Propósito de la tecnología

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.

Beneficios de la subclasificación

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.

Cómo funciona la subclasificación

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.

Restricciones de subclases

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] .

Véase también

Notas

  1. Tenga en cuenta que una clase de ventana NO es una clase en el sentido de programación orientada a objetos.
  2. Métodos de mensajes o Manejo de mensajes por clases . Fecha de acceso: 27 de julio de 2010. Archivado desde el original el 15 de diciembre de 2010.

Enlaces