Partilhar via


CWnd::SetTimer

Instale um timer do sistema.

UINT_PTR SetTimer(
   UINT_PTR nIDEvent,
   UINT nElapse,
   void (CALLBACK* lpfnTimer
)(HWND,
   UINT,
   UINT_PTR,
   DWORD
) 
);

Parâmetros

  • nIDEvent
    Especifica um identificador diferente de zero timer.Se o identificador de timer é exclusivo, esse mesmo valor é retornado por SetTimer.Caso contrário, SetTimer determina um novo valor exclusivo e retorna o.Para um timer de janela (que tem uma função de retorno de chamada NULA), o valor deve ser exclusiva somente para outros timers do windows que estão associados com a janela atual.Para um timer de retorno de chamada, o valor deve ser exclusivo para todos os temporizadores em todos os processos.Portanto, quando você cria um timer de retorno de chamada, é mais provável que o valor retornado pode ser diferente do valor que você especificar.

  • nElapse
    Especifica o valor de tempo limite, ou o intervalo, em milissegundos.

  • lpfnTimer
    Especifica o endereço de função de retorno de chamada do fornecida TimerProc que processa as mensagens de WM_TIMER .Se esse parâmetro é NULL, as mensagens de WM_TIMER são colocadas na fila de mensagens de aplicativos e são tratadas pelo objeto de CWnd .

Valor de retorno

O identificador do timer do novo timer se a função é bem-sucedida.Esse valor pode ou não pode ser igual ao valor passado com o parâmetro de nIDEvent .Um aplicativo sempre deve passar o valor de retorno da função de membro de KillTimer para matar o timer.Diferente de zero se com êxito; caso contrário, 0.

Comentários

Um valor de intervalo é especificado, e cada vez que o intervalo decorre, o sistema enviar uma mensagem de WM_TIMER a fila de mensagens instalação do aplicativo instalando ou passa a mensagem a uma função de retorno de chamada application-defined de TimerProc .

A função de retorno de chamada de lpfnTimer não precisa ser chamada TimerProc, mas deve ser declarada como estáticos e ser definida como segue.

void CALLBACK TimerProc(
   HWND hWnd,      // handle of CWnd that called SetTimer
   UINT nMsg,      // WM_TIMER
   UINT_PTR nIDEvent,   // timer identification
   DWORD dwTime    // system time
);

Exemplo

Este exemplo usa CWnd::SetTimer, CWnd::OnTimer, e CWnd::KillTimer para tratar mensagens de WM_TIMER .O primeiro timer é configurado para enviar uma mensagem de WM_TIMER a janela de quadro chave cada 2 segundos em OnStartTimer.O manipulador de eventos de OnTimer trata mensagens de WM_TIMER para a janela de quadro chave.Este método faz com que o alto-falante PC soe cada 2 segundos.O segundo timer envia uma mensagem à função de retorno de chamada cada 37,5 segundos.OnStopTimer irá interromper os dois timers chamando CWnd::KillTimer para cada identificação do timer

void CMainFrame::OnStartTimer() 
{
    // This timer uses a WM_TIMER message, not a callback.
    // Therefore, the timer is specific to this window.
    // m_nWindowTimer is a UINT_PTR field.
    m_nWindowTimer = SetTimer(1, 2000, NULL);
    
    // For this demo, we specify an interval that won't overlap
    // with the window timer.
    m_nCallbackTimer = SetTimer(2, 3750, &CMainFrame::MyTimerProc);
    
    // See whether we got the ID we requested in the first parameter.
#ifdef _DEBUG
    CString str;
    str.Format(_T("m_ncallbackTImer ID = %d"), m_nCallbackTimer);
    TRACE(str);
#endif

}

 void CALLBACK CMainFrame::MyTimerProc(
   HWND hWnd,      // handle of CWnd that called SetTimer
   UINT nMsg,      // WM_TIMER
   UINT_PTR nIDEvent,   // timer identification
   DWORD dwTime    // system time
)
{
     MessageBeep(0x00000030L);   // Windows question sound.
}

void CMainFrame::OnStopTimer() 
{
   KillTimer(m_nWindowTimer);   
   KillTimer(m_nCallbackTimer);   
}

void CMainFrame::OnTimer(UINT nIDEvent) 
{
   MessageBeep(0xFFFFFFFF);   // Beep


   // Call base class handler.
   CMDIFrameWnd::OnTimer(nIDEvent);
}

Requisitos

Cabeçalho: afxwin.h

Consulte também

Referência

CWnd Class

Gráfico de hierarquia

WM_TIMER

CWnd::KillTimer

SetTimer