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