📄 timer.cpp
字号:
// Timer.cpp: implementation of the CTimer class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "Timer.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CTimer::CTimer()
{
m_uTimerID = 0;
m_iStartCount = m_iStopCount = 0;
}
CTimer::~CTimer()
{
if (m_uTimerID != 0)
{
Stop();
}
}
BOOL CTimer::Start(HWND hWnd, UINT uDelay, UINT uResolution, UINT fuEvent)
{
if (timeGetDevCaps(&m_timeCaps, sizeof(TIMECAPS)) != TIMERR_NOERROR)
{
return FALSE;
}
m_hWnd = hWnd;
m_uTimerRes = min(max(m_timeCaps.wPeriodMin, uResolution), m_timeCaps.wPeriodMax);
timeBeginPeriod(m_uTimerRes);
m_uTimerID = timeSetEvent(uDelay, m_uTimerRes, TimeProc, (DWORD)m_hWnd, fuEvent);
if (!m_uTimerID)
{
OutputDebugString("Timer start fail\n");
return FALSE;
}
return TRUE;
}
void CTimer::Stop()
{
if (m_uTimerID)
{
UINT uID = m_uTimerID;
m_uTimerID = 0;
if (timeKillEvent(uID) != TIMERR_NOERROR)
{
OutputDebugString("Timer stop fail\n");
}
timeEndPeriod(m_uTimerRes);
}
}
void CALLBACK CTimer::TimeProc(UINT wTimerID, UINT msg, DWORD dwUser, DWORD dw1, DWORD dw2)
{
HWND hWnd = (HWND)dwUser;
if (IsWindow(hWnd))
{
::PostMessage(hWnd, WM_MM_TIMER, (WPARAM)wTimerID, 0);
}
}
void CTimer::StartCount()
{
m_iStartCount = timeGetTime();
}
void CTimer::StopCountAndReport(BOOL bWithMsgBox)
{
int iCount, iHour, iMin, iSec;
m_iStopCount = timeGetTime();
iCount = m_iStopCount - m_iStartCount;
iHour = iCount / 3600000;
iCount -= iHour * 3600000;
iMin = iCount / 60000;
iCount -= iMin * 60000;
iSec = iCount / 1000;
iCount -= iSec * 1000;
m_strReport.Format("The running time is: %2d:%02d:%02d.%03d", iHour, iMin, iSec, iCount);
// m_strReport.Format("总共运行时间:%2d:%02d:%02d.%03d", iHour, iMin, iSec, iCount);
// OutputDebugString(m_strReport);
if (bWithMsgBox)
{
AfxMessageBox(m_strReport);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -