La función invalidate marca el área de dibujo como invalidada. Este indicador se usa cuando se vuelve a dibujar la ventana; si el área se invalida, redibujará el área, de lo contrario, simplemente abandonará el área de la pantalla tal como está. invalidate invalida todo el área de cliente de un objeto determinado, invalidaterect invalida una región específica del área de cliente. La función de actualización realiza el redibujado real.
El motivo de tal mecanismo, y no solo dibujar inmediatamente cuando usted sabe que algo debe cambiarse, es que puede evitar múltiples rediseños, por ejemplo, recibió tres mensajes de tecla de una vez, que desplazan un área de texto. Si volvió a dibujar el área de texto para cada una de las pulsaciones de tecla, tendría que dibujar el área de texto tres veces y la aplicación dejaría de responder. Al procesar en su lugar todos los eventos clave, actualizar la estructura de datos adjunta al área de texto e invalidar el área de texto antes de volver a dibujar el área de texto, solo vuelve a dibujar el área de texto una vez.
quieres decir, no debemos llamar "Invalidar" o "CWnd :: UpdateWindow()" en una instancia en la aplicación ¿no? necesitamos llamar a cualquiera de ellas para obtener el mensaje wm_paint – Naruto
De hecho. Llamar a ambos no es necesario. Por lo general, se llama a 'UpdateWindow' solo si el mismo hilo hace un cálculo extenso después, por lo que no volverá a su ciclo de mensajes lo suficientemente pronto. En ese caso, desea repintar inmediatamente, no esperar hasta un momento más conveniente. Pero, en general, usa 'Invalidate'. – Thomas
oh ok Gracias. – Naruto