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
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.
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?
Debe estar muy wapo todo eso (genial) , a ver si me animo ha hacerlo... alguna pagina con código del tema ?
En
Angel Code tienes un ejemplo de hook(capitán garfio en inglé xD), bastante bueno.
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.