FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
No funciona LockWindowUpdate en XP
Hola amigos
Como dice el titulo del hilo, no me funciona la funcion LockWindowUpdate en Win XP, utilizo dicha funcion para quitar el molesto parpadeo que se produce cuando se crea y maximiza un fom hijo dentro de un Form MDI. En Win 98 funciona perfectamente, pero al probarlo en XP, la funcion no paraliza la actualizacion de pantalla cuando se crean y maximizan los form hijos, aqui va como utilizo la funcion... Se agradece cualquier ayuda... Saludos....
__________________
Un hombre inteligente aprende de los errores propios... Un hombre sabio aprende de los errores de los demas... |
#2
|
||||
|
||||
En estos momentos no recuerdo los detalles pero me parece que LockWindowsUpdate debes aplicarlo no a Self.Handle sino a Self.ClientHandle (¿o ambos?). El caso es que ClientHandle corresponde a una ventana dentro del formulario que no se ve pero es la que se ocupa de los formularios hijos.
// Saludos |
#3
|
||||
|
||||
Cita:
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#4
|
||||
|
||||
Cita:
|
#5
|
||||
|
||||
la compliqué?? ... si tenemos una ventana en particular, por ejemplo un TAnimate que queremos bloquear, y este TAnimate esta contenido por un panel, el panel pro un frame y el frame por el form, lo que nos conviene bloquear es el TAnimate o a lo sumo su contenedor inmediato (el TPanel). Si lo bloqueamos para realizar un proceso, y este proceso puede demorar, el formulario no repintará lo que tengamos bloqueado (siempre que ejecutemos un ProcessMessage dentro de nuestro proceso).
¿Se entiende a que voy?
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#6
|
||||
|
||||
A ver, vamos a recapitular o salirnos por la tangente
Si por "molesto parpadeo", senpiterno se refiere al efecto de animación de ventanas al maximizar o restaurar entonces es más que suficiente deshabilitar tal efecto:
Claro que esto desactivará la animación en todo el sistema. Si sólo quiere desactivarse en las ventanas hijas entonces puede activarse una vez que se termine de maximizar o restaurar la ventana. En este mensaje hay más detalles al respecto. // Saludos pd: ya en la noche consultaré con la almohada para entender a Federico |
#7
|
|||
|
|||
Gracias por la respuesta roman y por la aclaracion del concepto de bloqueo del repintado de las ventanas delphi.com.ar, pero el asunto es que sigue sin funcionar. Prove con LockWindowUpdate(Self.ClientHandle) y LockWindowUpdate(Self.Handle) e incluso ambos que el efecto deseado sigue sin funcionar.....???
Saludos
__________________
Un hombre inteligente aprende de los errores propios... Un hombre sabio aprende de los errores de los demas... |
#8
|
||||
|
||||
¿Probaste lo de deshabilitar las animaciones? ¿Revisaste el hilo que mencioné?
// Saludos |
#9
|
|||
|
|||
roman vi e implemente lo del hilo al cual que merivaste, pero aun sigue sin funcionar. Cuando me refiero al molesto efecto del formulario al crearce, hago referecia, a que cuando un form hijo se crea en un MDI, este se crea con un tamaño mas reducido que el contenedor de este y al ejecutarse la accion de maximizarce (ya que asi la tengo definida) este da unos parpadeos. Lo que quiero lograr es que el form aparesca ya maximizado, sin que se vea su tamaño original de creacion y el molesto efecto de maximizacion, espero haber aclarado mas las cosas...
Saludos.
__________________
Un hombre inteligente aprende de los errores propios... Un hombre sabio aprende de los errores de los demas... |
#10
|
||||
|
||||
Vamos a ver, creo que esto te debe funcionar en cualquier caso:
donde Form2 es el formulario hijo y EnableAnimation es como en el otro hilo. // Saludos |
#11
|
||||
|
||||
Y bueno, siguiendo con las pruebas veo que en el código anterior puedes quitar LockWindowsUpdate y funciona perfecto. Total, que LockWindowsUpdate termina siendo innecesario y habría que cambiar el título a este hilo.
// Saludos |
#12
|
|||
|
|||
Gracias roman por la ayuda, pero lamento decir que no funciona, es mas se produce un efecto de pixelacion de la pantalla, es decir quedan pegados ciertos cuadros de la pantalla, hasta que el proceso de mostrar el formulario se termina...como informacion adicional utilizo win xp profesional y delphi 7. Lo extraño es que antes cuando utilizaba win 98 con solo la utilizacion LockWindowUpdate(Handle) antes de crear el formulario me funcionada.....
Saludos...
__________________
Un hombre inteligente aprende de los errores propios... Un hombre sabio aprende de los errores de los demas... Última edición por senpiterno fecha: 24-01-2005 a las 23:11:26. |
#13
|
||||
|
||||
Pues no sé qué decirte. Suena a un problema del driver de video. Yo he hecho la prueba también con Delphi7 y Win Xp Profesional y me ha funcionado perfecto.
// Saludos |
#14
|
|||
|
|||
Roman en que momento el form creado recive el mensaje WMSysCommand...
Saudos...
__________________
Un hombre inteligente aprende de los errores propios... Un hombre sabio aprende de los errores de los demas... |
#15
|
||||
|
||||
Cita:
Si te fijas, el código que te pongo lo que hace es detectar este mensaje e inhabilitar la animación antes de procesarlo (antes de llamar a inherited) y lo restaura después de que termina el procesamiento por defecto. ¿Por qué no pruebas primero poniendo EnableAnimation(false) en el OnCreate del formulario olvidándote del WMSysCommand? Como mencioné antes, esto debe deshabilitar las animaciones en todo el sistema así que debería funcionarte bien. Lo del SysCommand era sólo para no deshabilitar las animaciones en otras aplicaciones sino sólo al momento de maximizar o restaurar una ventana hija. // Saludos |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|