Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo cronometrar un programa

Cómo cronometrar un programa

//El siguiente código pausa el temporizador y lo retrasa durante 20 segundos antes de iniciarlo.

matar el tiempo(1); //Detener el temporizador 1.

SetTimer(2, 20000, NULL); //Inicia el temporizador número 2 y activa la función OnTimer después de 20 segundos.

//La siguiente es la implementación de la función OnTimer.

Anular OnTimer (evento de unidad)

{

Interruptor (nIDEvent){

Caso 1:

//Completa la función del temporizador 1.

Pausa;

Caso 2:

Matar el tiempo (2); //Matar el temporizador 2

SetTimer(1, Paso, NULL); //Inicia el temporizador 1

Pausa;

}

}

Los temporizadores se utilizan a menudo en programación. El método para usar el temporizador es relativamente simple. Generalmente, le indica a Windows un intervalo de tiempo y luego WINDOWS activa periódicamente el programa en este intervalo de tiempo. Generalmente hay dos formas de lograr esto: enviar un mensaje WM_TIMER y llamar a una función de devolución de llamada definida por la aplicación.

1.1 Utilice WM_TIMER para configurar el temporizador.

Primero eche un vistazo al prototipo de la función API SetTimer.

UINT_PTR establece el temporizador (

HWND hWnd, //identificador de ventana

UINT_PTR nIDEvent, //ID del temporizador, cuando hay varios temporizadores, puede determinar qué temporizador es según este ID

UINT uElapse, //Intervalo de tiempo en milisegundos

TIMERPROC lpTimerFunc //Función de devolución de llamada

);

Por ejemplo

SetTimer(m_hWnd, 1, 1000, NULL); // Un temporizador que se activa cada 1 segundo.

En los programas MFC, SetTimer está encapsulado en la clase CWnd, por lo que no es necesario especificar el identificador de ventana al llamar, por ejemplo:

UINT SetTimer(1, 100, NULL );

El valor de eco de la función es el primer valor del parámetro 1, que representa el número de identificación de este temporizador.

El segundo parámetro significa esperar 100 milisegundos antes de reprocesar. En este método, el tercer parámetro suele estar vacío.

Nota: Al configurar el segundo parámetro, se debe tener en cuenta que si el tiempo de espera es más corto que el tiempo de procesamiento, se producirán problemas en el programa.

1.2 Llamar a la función de devolución de llamada

Este método primero escribe una función de devolución de llamada en el siguiente formato.

void callback TimerProc(HWND hWnd, UINT nMsg, UINT nTimerid, DWORD dwTime);

Luego use la función setter (1, 100, timer proc) para crear un temporizador, tercero El primer parámetro es la dirección de la función de devolución de llamada.

En segundo lugar, la implementación y aplicación de múltiples temporizadores

Asignamos una ID al temporizador cuando lo instalamos. Cuando usamos múltiples temporizadores, esta ID comienza a cambiar.

Cuando no se utiliza MFC, cuando se recibe el mensaje WM_TIMER, el valor en WPARAM wParam es el ID del temporizador.

Al usar MFC, es aún más sencillo. Podemos agregar la función de procesamiento de mensajes al temporizador de WM_TIME. Consulte el ejemplo a continuación.

void CTimerTestDlg::on timer(UINT nIDEvent)

{

interruptor(nIDEvent)

{

Caso 24: /// Maneja el temporizador con ID 24.

draw 1();

Break;

Caso 25: /// Maneja el temporizador con ID 25.

dibujar 2();

Romper

}

CDialog::on timer(nIDEvent);

}

Cuando usa una función de devolución de llamada, podemos determinar qué temporizador se basa en el valor de nTimerid, por ejemplo:

void callback TimerProc(HWND hWnd, UINT nMsg , UINT nTimerid, DWORD dwTime)

{

Conmutador (nTimerid)

{

Caso 1: ///ID de procesamiento 1 minutero.

do 1();

Break;

Caso 2: /// Maneja el temporizador con ID 2.

do2();

Pausa;

}

}

Tercero, cancela el cronómetro

p>

Después de que el temporizador ya no se use, debemos llamar a KillTimer para cancelar el temporizador. El prototipo de KillTimer es el siguiente.

Boolean Killer Timer(

HWND hWnd, //identificador de ventana

UINT_PTR uIDEvent //ID

);

En programas MFC, podemos llamar directamente a KillTimer(int nIDEvent) para cancelar el temporizador.