Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


OnPaint llamada continuamente

Aqui programadores en la plataforma Win32 con Visual C++ de Microsoft...

Moderador: latindeveloper

OnPaint llamada continuamente

Notapor manager el Dom Abr 10, 2005 4:01 pm

Hola

Estoy empezando a desarrollar un programa en Visual C++ y me surge un problemilla. Resulta que creo una ventana y asocio a esta el mensaje WM_PAINT con su correspondiente procedimiento.
Pues bien, el procedimiento que pinta la ventana (miventana::OnPaint()) se llama continuamente aún sin redimensionar o mover la ventana.
El problema es que en ese procedimiento pinto algunos bitmaps y al estarse repintando todo el rato se nota el parpadeo.
No debería llamarse esta función solo cuando se redimiensiona o mueve la ventana?

Gracias por vuestra ayuda,
Un saludo
manager
Novato
Novato
 
Mensajes: 3
Registrado: Sab Abr 02, 2005 8:03 am

Re: OnPaint llamada continuamente

Notapor latindeveloper el Jue Abr 14, 2005 1:28 pm

Sucede que cuando uno "pinta" varios elementos en una ventana sin control, el resultado es un parpadeo molestoso.

Esto se soluciona con la implementacion del double buffering, Pronto escrbiré algo al respecto pero mientras tanto puedes analizar el codigo de un control que utiliza esta tecnica de pintado:

http://www.latindevelopers.com/vcpp/misc/nschart/

La idea del double buffering es pintar sobre un objeto bitmap que previamente ha sido inicializado y cuando todo este listo pintar éste bitmap... el resultado: nadie notará el parpadeo y mejoraras tus tecnicas de programacion grafica.
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Re: OnPaint llamada continuamente

Notapor manager el Jue Abr 14, 2005 4:06 pm

Hola, gracias por la respuesta navisoft!
Mi problema era mucho mas sencillo. Como comentaba se me llamaba la función OnPaint continuamente aún sin mover o redimensionar la ventana.
El problema estaba en que en la función OnPaint me creaba un CClientDC en lugar de un CPaintDC... Ahora ya me funciona correctamente:)
Gracias de todos modos por la ayuda por que la técnica esa del doble buffering tambien me viene bien conocerla para mi proyecto

Sal2
manager
Novato
Novato
 
Mensajes: 3
Registrado: Sab Abr 02, 2005 8:03 am


Volver a Visual C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados