Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Subclasificación De Ventanas

Iniciado por Ipis, 01 de Noviembre de 2003, 08:46:43 PM

« anterior - próximo »

Ipis

 Hola!!!

He buscado información sobre la función SubclassWindow y creo que he captado su funcionamiento,pero no me queda muy claro de para qué es útil exactamente.

Podríais darme algún ejemplo o situación en la que convendría usar la subclasificación de ventanas??

Gracias de antemano.... :P  

MA]Mestre

 Tanto la Subclasificación como la superclasificación te ofrecen la posibilidad de gestionar el procedimiento ventanta de una ventana ( boton, edit, static... etc etc ). Así pues puedes recoger los correspondientes WM_XXX y no contentarte con los simples Códigos de notificación ( BN_CLICKED, EN_CHANGE, LBS_SELCHANGE... )

Necesitarás subclasificar o superclasificar cuando no te puedas contentar con los mensajes que te ofrecen los códigos de notificación. Por ejemplo:

Si quieres utilizar un static dentro de tu ventana para renderizar tus modelos en OpenGL, necesitarás como mínimo el WM_PAINT del static ( label ). Los códigos de notificació que te llegan al WM_COMMAND no te avisarán del repintado, así pues subclasifica o superclasifica.

Un saludo.

tiutiu

 Nunca habia oido eso de superclasificar :S

El subclassing es como meterle un hook al wndproc de un control, mola bastante y da unas posibilidades d la ostia.

Mestre, puedes explicar q es eso d superclassing?  
b>:: Pandora's Box project ::
Notas e ideas sobre desarrollo de engines para juegos

Vanch

 Debe estar muy wapo todo eso  (genial) , a ver si me animo ha hacerlo... alguna pagina con código del tema ?  
anch!!! Vanch!!!, don't let me alone.

Zaelsius

 En Angel Code tienes un ejemplo de hook(capitán garfio en inglé xD), bastante bueno.

MA]Mestre

 Subclasificando haces un 'bypass' al procedimiento ventana de una clase
existente. Superclasificando creas una clase nueva basada en otra.

Para obtener la información de una clase existente: GetClassInfoEx

GetClassInfoEx (hInstance,"BUTTON",&wndclass);

Modificar los datos de la estructura:

wndclass.cbSize=sizeof(wndclass);
wndclass.hInstance=hInstance;
wndclass.lpszClassName="BotonTiuTiu";
ViejoProc=wndclass.lpfnWndProc;
wndclass.lpfnWndProc=WndNewProc;


Registrar la nueva classe: RegisterClassEx

RegisterClassEx (&wndclass);


Despues solo CreaateWindow de la classe nueva "BotonTiuTiu"...   (uoh)


Citarsubclassing es como meterle un hook al wndproc de un control


Ok, pero vigila que un hook (Sistema o Aplicación) traspasa los limites de direccionamiendo de
memoria de un proceso ( 4GB ), subclasificar o superclasificar no, son cosas totalmente distintas.


Un Saludo.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.