为者常成,行者常至。

持续做一些细小而有用的事情。

在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); }

 

posted on 2017-12-08 10:51  SoCode  阅读(479)  评论(0编辑  收藏  举报

导航