Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/09/2005, 18:38
Avatar de Jad-Neo
Jad-Neo
 
Fecha de Ingreso: octubre-2004
Mensajes: 344
Antigüedad: 20 años, 6 meses
Puntos: 0
************************************************** ********
Subclassing

Antes de poder entender lo que es el subclassing hay que saber ciertas cosas sobre las ventanas.

Toda ventana (form en VB) del Windows pertenece a una clase, de la cual hereda las propiedades que la diferencian de las otras (los más puristas dirían, con razón, que cualquier cosa que sale por la pantalla es una ventana, pero será mejor no entrar en detalles, o nos perderemos). Una de estas propiedades o características heredadas es un puntero a una función de gestión de mensajes. Esta función recibe el código del mensaje y unos parámetros asociados al mensaje y se encarga de, en respuesta a esos mensajes, ejecutar ciertas acciones.

Con Visual Basic nosotros podemos programar ciertos eventos básicos, como puede ser el form_click, form_load, etc. Pero hay muchos eventos, muchísimos, que el Visual Basic no detecta, y que a veces puede ser útil detectarlos para realizar cierta tarea. Por ejemplo, cuando pasamos con el mouse sobre un elemento de un menú sin seleccionarlo se genera un mensaje WM_MENUSELECT. La función de la ventana recibe el mensaje, y el identificador de la opción de menú seleccionada, pero por defecto no tiene nada que ejecutar cuando esto sucede. Y como intuireis, no hay un evento llamado form1_wm_menuselect que nos lo detecte y permita programarlo.

La técnica de subclassing se basa en crear una función de gestión de estos mensajes y anteponerla a la función por defecto de la ventana.

Fuente: http://www.elguille.info/colabora/vb/bordes_jgb.htm
************************************************** ********

Como crear un almacenador de mensajes. Cosa que el SmartMenuXP.dll puede hacer. Comprobado, pero es mejor tenerlo como una clase *.cls para no tener que cargar con la DLL.
__________________
Nunca seas sabio en tu propia opinión.