Compartilhar via


CWnd::SetTimer

Instala 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 de temporizador diferente de zero. Se o identificador de timer for exclusivo, esse mesmo valor será retornado por SetTimer. Caso contrário, SetTimer determina um novo valor exclusivo e retorna isso. Para um timer de janela (que tem uma função de retorno de chamada NULL), o valor deve ser exclusivo somente para outros timers de janelas associados à janela atual. Para um timer de retorno de chamada, o valor deve ser exclusivo para todos os timers em todos os processos. Portanto, quando você cria um timer de retorno de chamada, é mais provável que o valor retornado seja diferente do valor especificado–.

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

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

Valor de retorno

O identificador 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 nIDEvent. Um aplicativo sempre deve passar o valor de retorno da função de membro de KillTimer para encerrar o temporizador. Diferente de zero se tiver êxito; caso contrário, 0.

Comentários

Um valor de intervalo é especificado, e cada vez que o intervalo decorre, o sistema envia uma mensagem de WM_TIMER à fila de mensagens de instalação do aplicativo de instalação ou passa a mensagem para uma função de retorno de chamada definida pelo aplicativo TimerProc.

A função de retorno de chamada lpfnTimer não precisa ser denominada TimerProc, mas deve ser declarada como estática 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 WM_TIMER para a janela do quadro principal a cada 2 segundos em OnStartTimer. O manipulador de eventos OnTimer controla as mensagens do WM_TIMER para a janela de quadro principal. Este método faz com que o alto-falante do PC toque um aviso sonoro a cada 2 segundos. O segundo timer envia uma mensagem à função de retorno de chamada a cada 3,75 segundos. OnStopTimer interromperá dois timers chamando CWnd::KillTimer para cada ID de 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 da hierarquia

WM_TIMER

CWnd::KillTimer

SetTimer