La Web del Programador: Comunidad de Programadores
 
    Pregunta:  204 - PROBLEMAS CON UPDATEALLVIEWS()
Autor:  Javier
Pregunta Visual C 5.0
¿Que debo hacer para que cadda vez que quiera actualizar una vista no me borre lo que tengo antes sino que me añada lo que quiero meter?
¿Tiene UpdateAllViews() alguna forma de hacer esto?
Muchas Gracias

  Respuesta:  yon
En MFC de visual; Existen varias formar de actualizar el contexto sin que se te borre el contenido; Te explicare las formas màs sencillas.
Existen dos manejadores para actualizar el dispositivo de contexto(CDC), el OnDraw que por lo general pertenece a ala clase Vista del proyecto y el On_paint, que es parecido.
Ambas funciones realizan la misma labor; Responder a los mensajes de windows de actualizar el contenido de la pantalla; Windows cada vez que tu ventana se maximiza o se sobre escribe otro ventana sobre ella manda un mensaje al OnDraw o la On_paint, para que actualice el contenido del programa, el OnDraw por lo general recibe un CDC*; Este es el dispositivo de contexto con el realizas todas las operaciones de despliegue a pantalla. El On_paint es mas eficiente pero mas dificil de usar; Primero debes obtener un dispositivo de contexto, esto lo heces asì:
CPaintDC Obj(this);

Asi cada vez que windows mande se actualiza tu pantalla.
Pero si lo que deseas es mandarla a actualizar has lo siguiente:
* Crea un estructura para almacenar los datos a desplegar.
*Instanciala en el Doc.
*En el OnDraw puedes invocar la impresion a pantalla con el CDC y el
GetDocument()-> // Es un puntero al Doc.
*Imprimir con esas dos herramientas los datos.
*En el momento que necesites que tu programa vuelva a imprimir, usa la funcion Invalidate(); Esta le manda un mensaje a windows que el contenido de la ventana ya no es valido y debe volverse a imprimir.
**Con el On_paint es parecido pero se usa InvalidateRect(), y debes usar el CPaintDC; Con el InvalidateRect(RECT) puedes mandalarle una estructura tipo RECT para que solo se modifique una parte de la pantalla esto hace mas eficiente al programa ya que la actualizacion de una pantalla es un proceso costoso.

  Respuesta:  Alonso Salazar
No logro comprender exactamente tu problema quisiera me explicaras exactamente los que quieres hacer y cual es el problema que te presenta para ayudarte, me puede enviar una explicacion mas extensa, quizas pueda resolver tu problema ya que yo programo en VC++ 5.0 y utilizo las vistas y el DAO para acceso a datos y no he tenido ningun problema con ellos.