Red de conocimiento informático - Conocimiento informático - ¡Problema con el dibujo de líneas en el control del temporizador! (con código)

¡Problema con el dibujo de líneas en el control del temporizador! (con código)

¡HOHO!

void CLineMoveDlg::Draw()

¿Usted completa esta función manualmente? ¡Aquí es donde está el error! Completó la función utilizando un asistente (como ClassWizard).

Causa: ¡Tu función no es una función de respuesta de mensaje! ¡No tiene función de volver a dibujar! Está bloqueado. Por supuesto que desaparecerá. El asistente completará una función que responde al mensaje. En lugar de simplemente agregar una función aquí, completará dos lugares para asignar el mensaje.

Crees que cambiar las coordenadas resuelve el problema, pero en realidad no lo detiene por el momento. Si no lo cree, minimice y luego maximice esta ventana y vea si los gráficos todavía están allí.

-------------------------------

No, lo has entendido todo mal. La función agregada por el asistente es la función de respuesta de mensaje, ¡que es una función vacía! ¡No es una función específica! Es decir, si desea escribir una función en el mapa de mensajes, debe utilizar el asistente para definir una función de respuesta de mensaje y luego escribir el código en ella. El mapa de mensajes se escribe automáticamente en el archivo de encabezado de la función de respuesta de mensaje que usted define.

-----------------------

¿Es esto lo que se llama montar en burro para encontrar un caballo?

¡Jajaja!

--------------------------------

Yo también soy Novato, jaja, tu código me parece muy laborioso. ¡Aún no he aprendido muchas cosas!

Se debe llamar a OnPainT antes de inicializar la ventana.

pt1=Punto(10,50);

pt2=Punto(100,20);

PuntoInit(pt1,pt2);

SetTimer(1,10,NULL);

¿Existen estas cuatro declaraciones antes de crear la ventana?

¿Por qué no mover todas sus definiciones aquí y probarlas?

--------------------

Redibujar: El método habitual es guardar el metarchivo (en otra función) y luego reproduzca el metarchivo. (en la función OnPainT). También puede utilizar la clase de colección CPtArray para reemplazar el metarchivo.

Una cosa a tener en cuenta: si dibujas otra función y luego quieres volver a dibujarla

Necesitas usar la función Invalidate() para generar el mensaje WM_PAINT y pasarlo a OnPaint; función

El segundo punto a tener en cuenta es: si dibuja en la función OnPaint y usa la clase de desplazamiento como clase base, entonces también debe restablecer OnPrepareDC(&dc);//restablecer las coordenadas lógicas Origen

De lo contrario, después de volver a dibujar, el gráfico se ejecutará en la primera pantalla.

Es muy complicado y no se puede explicar claramente en pocas palabras. Será mejor que veas el vídeo de 10 lecciones de Sun Xin http://www.sunxin.org/video/vc.asp

2 Muchas horas, especializándome en redibujado