.h
...
#define WM_USER_TIMER1 (WM_USER + 12345) /*定时器ID值*/
#define WM_USER_TIMER2 (WM_USER + 12346) /*定时器ID值*/
...
class CMFC?Dlg : public CDialogEx
{
...
public:
afx_msg void OnBnClickedButton1();
afx_msg void OnBnClickedButton2();
afx_msg void OnTimer(UINT_PTR nIDEvent);
};
.cpp
...
BOOL bTimer1 = FALSE;
void CMFC?Dlg::OnBnClickedButton1()
{
// 定时器1
if (!bTimer1)
{
bTimer1 = TRUE;
SetTimer(WM_USER_TIMER1, 1000, 0);
}
else
{
bTimer1 = FALSE;
::KillTimer(GetSafeHwnd(), WM_USER_TIMER1);
::SetWindowText(GetSafeHwnd(), _T("定时器1 退出"));
}
}
BOOL bTimer2 = FALSE;
void CALLBACK TimerProc2(HWND hWnd, UINT nMsg, UINT uTimerid, DWORD dwTime)
{
CTime ctNow = CTime::GetCurrentTime();
CString str = ctNow.Format(_T("%Y-%m-%d %H:%M:%S"));
::SetWindowText(hWnd, _T("定时器2 ") + str);
}
void CMFC?Dlg::OnBnClickedButton2()
{
// 定时器2
if (!bTimer2)
{
bTimer2 = TRUE;
SetTimer(WM_USER_TIMER2, 1000, TimerProc2);
}
else
{
bTimer2 = FALSE;
::KillTimer(GetSafeHwnd(), WM_USER_TIMER2);
::SetWindowText(GetSafeHwnd(), _T("定时器2 退出"));
}
}
void CMFC?Dlg::OnTimer(UINT_PTR nIDEvent)
{
// 定时器1
CTime ctNow = CTime::GetCurrentTime();
CString str = ctNow.Format(_T("%Y-%m-%d %H:%M:%S"));
::SetWindowText(GetSafeHwnd(), _T("定时器1 ") + str);
CDialogEx::OnTimer(nIDEvent);
}