VC中定时器设置

来源:互联网 发布:七彩网络下载 编辑:程序博客网 时间:2024/05/19 23:01

本文简单介绍下VC中定时器设置。


首先,新建对话框应用程序,然后添加几个操作按钮。

定义相关变量

private:int m_nValue;DWORD m_dwTimeStarted;LARGE_INTEGER m_cupHZ;LARGE_INTEGER m_StartCount;

源文件

void CTimeCountDlg::OnTimer(UINT nIDEvent) {UpdateData(TRUE);switch(nIDEvent){case 1:{m_nValue+=1000;m_sValue1.Format("%d",m_nValue);}break;case 2:{double dbTime = 0;dbTime = (::GetTickCount() - m_dwTimeStarted)*1.0;m_sValue2.Format("%f",dbTime);}break;case 3:{double dbTime = 0;MSG msg;UINT LFactor = 1000;while(::GetTickCount() - m_dwTimeStarted < 3*LFactor){if (PeekMessage(&msg,0,0,0,PM_REMOVE)){TranslateMessage(&msg);DispatchMessage(&msg);}}dbTime = (::GetTickCount() - m_dwTimeStarted)*1.0;m_sValue3.Format("%f",dbTime);}break;case 4:{UINT LFactor = 1000;double dbTimestamp = 0;LARGE_INTEGER CurCount;QueryPerformanceCounter(&CurCount);CurCount.QuadPart = CurCount.QuadPart - m_StartCount.QuadPart;dbTimestamp = double(CurCount.QuadPart)*LFactor;dbTimestamp = dbTimestamp/double(m_cupHZ.QuadPart);m_sValue4.Format("%f",dbTimestamp);}break;default:break;}UpdateData(FALSE);CDialog::OnTimer(nIDEvent);}void CTimeCountDlg::OnButton1() {m_nValue = 0;SetTimer(1,1000,NULL);KillTimer(2);KillTimer(3);KillTimer(4);}void CTimeCountDlg::OnButton2() {m_dwTimeStarted = ::GetTickCount();SetTimer(2,1000,NULL);KillTimer(1);KillTimer(3);KillTimer(4);}void CTimeCountDlg::OnButton3() {m_dwTimeStarted = ::GetTickCount();SetTimer(3,1000,NULL);KillTimer(1);KillTimer(2);KillTimer(4);}void CTimeCountDlg::OnButton4() {QueryPerformanceFrequency(&m_cupHZ);m_StartCount.QuadPart = 0;QueryPerformanceCounter(&m_StartCount);SetTimer(4,1000,NULL);KillTimer(1);KillTimer(2);KillTimer(3);}


运行效果



总结:

按钮一:直接使用定时器操作


按钮二:获取操作系统运行时间,然后相减,立即开始



按钮三:获取操作系统运行时间,然后相减,*s内运行或者*s后开始



按钮四:查询定时器计数值



源码下载



0 0