MFC中如何使用定时器(SetTimer) |
您所在的位置:网站首页 › mfc怎么创建3个线程 › MFC中如何使用定时器(SetTimer) |
定时器是指在软件运行的过程中,在特定的而时间段之后动作。使其产生消息或者回调函数工作,从而实现有一定的功能。 定时器有两种工作方式,一种是通过发送消息,使其WM_TIMER消息动作。另一种是通过回调函数来动作。 主要使用的函数: SetTimer()函数是用来创建定时器的KillTimer()函数是用来结束定时器的以下是一个例程: 1、首先创建定时器,在此例子中定时器是在按钮的点击事件中创建的 void CSetTimerDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 if (m_nRedID == 0)//判断定时器有没有启动 { m_nRedID = SetTimer(1, 500, NULL);//启动定时器 } else { KillTimer(m_nRedID);//关闭定时器 m_nRedID = 0; ::ShowWindow(::GetDlgItem(m_hWnd,IDC_RED),SW_HIDE); } }2、当定时器启动之后,每隔500毫秒就会发送一次WN_TIMER 消息,使其对应的消息映射函数响应。 void CSetTimerDlg::OnTimer(UINT_PTR nIDEvent) { // TODO: 在此添加消息处理程序代码和/或调用默认值 if (nIDEvent == m_nRedID) { HWND hRed = ::GetDlgItem(m_hWnd,IDC_RED); int nShow; if (::IsWindowVisible(hRed)) { nShow = SW_HIDE; } else { nShow = SW_SHOW; } ::ShowWindow(hRed,nShow); } CDialogEx::OnTimer(nIDEvent); } 通过回调函数1、同样的,先是启动定时器,在SetTimer()函数的第三个参数上写入回调函数的函数名。 void CSetTimerDlg::OnBnClickedButton2() { // TODO: 在此添加控件通知处理程序代码 // TODO: 在此添加控件通知处理程序代码 if (m_nGreenID == 0) { m_nGreenID = SetTimer(2, 500, TimerProc); } else { KillTimer(m_nGreenID); m_nGreenID = 0; ::ShowWindow(::GetDlgItem(m_hWnd, IDC_BLUE), SW_HIDE); } }2、实现回调函数,在类的.CPP 中创建全局的回调函数。 VOID CALLBACK TimerProc(HWND hWnd, UINT uMsg, UINT uID, DWORD dwTimew) { HWND hRed = ::GetDlgItem(hWnd, IDC_BLUE); int nShow; if (::IsWindowVisible(hRed)) { nShow = SW_HIDE; } else { nShow = SW_SHOW; } ::ShowWindow(hRed, nShow); } |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |