在CMainFrame里使用定时器是有讲究的
设置定时器函数:SetTimer 单位毫秒
销毁定时器函数:KillTimer
消息:WM_TIMER
注意事项:
(1)不要在构造函数里设置定时器。
(2)不要在析构函数里销毁定时器。
原因:构造函数和析构函数中窗口句柄已无效。以下MFC源码道出了真相。
_AFXWIN_INLINE UINT_PTR CWnd::SetTimer(UINT_PTR nIDEvent, UINT nElapse, void (CALLBACK* lpfnTimer)(HWND, UINT, UINT_PTR, DWORD)) { ASSERT(::IsWindow(m_hWnd)); return ::SetTimer(m_hWnd, nIDEvent, nElapse, lpfnTimer); } _AFXWIN_INLINE BOOL CWnd::KillTimer(UINT_PTR nIDEvent) { ASSERT(::IsWindow(m_hWnd)); return ::KillTimer(m_hWnd, nIDEvent); }