Capturar mensajes

Post Reply
antolin
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Capturar mensajes

Post by antolin »

Hola.

Sabe alguiuen como capturar los mensajes:

WM_ENTERSIZEMODE 0x0231
WM_WXITSIZEMODE 0x9232

Necesito capturarlos desde una MDICHILD para controlar cuando refrescarla tras cambiarla de tamaño. Creo que sería interesante para mucha gente por lo que he leido en el foro.
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
User avatar
karinha
Posts: 7935
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Been thanked: 3 times
Contact:

Re: Capturar mensajes

Post by karinha »

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
antolin
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Capturar mensajes

Post by antolin »

Hay más comands interesantes no incluidos en mi version de FWH (2007):

WM_WINDOWPOSCHANGING 0x0046
WM_WINDOWPOSCHANGED 0x0047
WM_SIZING 0x0214

No se si en otras versiones los han tenido en cuanta.
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Capturar mensajes

Post by antolin »

Supongo que estos mensajes se pueden capturar desde el método HANDLEEVENT de la clase TWindow, pero preguntaba si no hubiera otra forma de hacerlo sin tener que modificar esa clase.
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
User avatar
Antonio Linares
Site Admin
Posts: 42521
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 75 times
Contact:

Re: Capturar mensajes

Post by Antonio Linares »

Antolin,

La forma correcta sería heredar una nueva clase a partir de TWindow e implementar su Método HandleEvent() en donde se atienda a esos mensajes.

Nosotros podriamos usar un codeblock y evaluarlo para cada mensaje de Windows, pero decidimos no hacerlo al entender que enlenteceria mucho la aplicación ya que constantemente se generan muchísimos mensajes de Windows.
regards, saludos

Antonio Linares
www.fivetechsoft.com
antolin
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Capturar mensajes

Post by antolin »

Gracias Antonio. Efectivamente modificando la TWindow no va, pero modificando la MDICHILD SI.

Ya sé cuano he termindado de redimensionar la pantalla para refrescar los controles. Ahora voy a ver si averiguo que mensaje recibe cuando le doy al boton "Restaurar" de la Barra de Titulos.

Gracias otr avez.
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
antolin
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Capturar mensajes

Post by antolin »

OK averiguado es: WM_SIZE 0x0005

Si WParam = 0 la pantalla ha sido restaurada (ni maximizada ni minimizada).
Si WParam = 1 la pantalla ha sido minimizada.
Si WParam = 2 la pantalla ha sido maximizada.
Si WParam = 3 (para pop_ups) cuando otra pantalla ha sido restaurada.
Si WParam = 4 (para pop_ups) cuando otra pantalla ha sido maximizada.

LParam trae las nuevas dimensiones del area de clientes. La parte LOW trae el Width y la parte HIGH el HEIGHT. A ver como las separo ahora...
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
User avatar
Antonio Linares
Site Admin
Posts: 42521
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 75 times
Contact:

Re: Capturar mensajes

Post by Antonio Linares »

Puedes usar las funciones nLoWord( nLParam ) y nHiWord( nLParam ) de FWH
regards, saludos

Antonio Linares
www.fivetechsoft.com
antolin
Posts: 498
Joined: Thu May 10, 2007 8:30 pm
Location: Sevilla

Re: Capturar mensajes

Post by antolin »

Gracias Antonio.

Lo he resuelto con nHeight := int(LParam/65536) y nWidth := LParam-(nHeight*65536) pero utilizaré las tuyas que son más racionales.
Peaaaaaso de foro...
FWH 2007 - xHarbour - BCC55
Post Reply