Compartilhar via


Creating Timers

Windows Mobile Not SupportedWindows Embedded CE Supported

9/9/2008

A timer é um recurso sistema que pode notificar um aplicativo no regular intervalos. Um aplicativo associa um timer com uma janela e define o timer de uma tempo limite específico período. Cada tempo o intervalo especificado, ou valor de tempo limite, para um timer especificado tiver decorrido, o sistema usa um WM_TIMER mensagem para notificar a janela associado com o timer; Como a precisão de um timer depende taxa relógio de sistema e a freqüência com que o aplicativo recupera as mensagens a partir de fila de mensagens, o valor de tempo limite somente é aproximada. O menor intervalo possível que um timer pode medida é o intervalo marcação sistema.

Para criar um timer, chamar o SetTimer função. O timer pode ser associado com uma janela específica ou com apenas o segmento. Se você associar o timer com uma janela, mensagem executar um loop processamento irá causar a mensagem WM_TIMER para ser distribuído para o procedimento janela para a janela. Se você não fizer isso associar o timer com uma janela, você deve design executar um loop a mensagem para reconhecer e identificador de mensagem WM_TIMER.

O seguinte exemplo de código mostra como criar um timer e associar o tempo com uma janela, usando o SetTimer função.

SetTimer(hWnd, ID_TIMER1, 2000, NULL);

Se a chamar para SetTimer Inclui um TimerProc função callback, o procedimento é chamado quando o timer expira. Este chamar é feito dentro de GetMessage Ou PeekMessage função. Isso significa que um segmento deve estar executando um loop de mensagem para serviço de timer, mesmo se você estiver usando um procedimento callback timer.

O seguinte exemplo de código mostra como incluir um função callback quando você chamar SetTimer.

SetTimer(hWnd, ID_TIMER2, 1000, (TIMERPROC)Timer2Proc);

O seguinte exemplo de código mostra um exemplo TimerProc função callback que desenha texto em uma janela e emite um som quando a função é chamado depois que o timer expira.

VOID CALLBACK Timer2Proc(
                        HWND hWnd, // handle of window for timer messages
                        UINT uMsg,    // WM_TIMER message
                        UINT idEvent, // timer identifier
                        DWORD dwTime  // current system time
                        )
{
  RECT rt;

  // Clear the window.
  InvalidateRect(hWnd, NULL, TRUE);
  UpdateWindow(hWnd);
  HDC hdc = GetDC(hWnd);
  GetClientRect(hWnd, &rt);
  MessageBeep(MB_ICONQUESTION);
  DrawText(hdc, TEXT("   Timer2 - Did you hear it?   "), 
          _tcslen(TEXT("   Timer2 - Did you hear it?   ")), &rt, 
          DT_SINGLELINE | DT_VCENTER | DT_CENTER);
  ReleaseDC(hWnd, hdc);
  return;
}

Um novo timer é iniciado temporização seu intervalo as soon as é criado. Um aplicativo pode alteração uma valor de tempo limite para um timer pelo chamado de SetTimer função e ele podem destruir um timer pelo chamado de KillTimer função. Para usar recursos sistema de forma eficiente, aplicativos devem destruir timers desnecessários.

O seguinte exemplo mostra como destruir um timer pelo chamado KillTimer.

KillTimer(hWnd, ID_TIMER1);

Você pode usar o timer e identificadores janela para identificar timers que são associado com uma janela. Você pode identificar timers que não são associado com uma janela específica usando o identificador retornado pelo SetTimer chamar.

Timer mensagens terão prioridade baixa na fila de mensagens. Embora você sabe que a janela associado com um timer é notificado um dia depois o intervalo timer expira, você não pode saber o tempo exato ele receberá a notificação.

Timers expirar em regular intervalos, mas um timer que expira múltiplo horas antes que está sendo atendido não gera múltiplo Mensagens WM_TIMER.

See Also

Concepts

Using Resources

Other Resources

GWES Application Development