⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmtimer.cpp

📁 著名的任天堂FC游戏机模拟器VirtuaNes 085版的源码!
💻 CPP
字号:
//
// Multimedia timer support
//
#include "DebugOut.h"
#include "MMTimer.h"

// 僐儞僗僩儔僋僞/僨僗僩儔僋僞偺堊偺僀儞僗僞儞僗
static	CMMTimer	MMTimer;

BOOL	CMMTimer::m_bInitialize = FALSE;

BOOL	CMMTimer::m_bHigh = FALSE;
SQWORD	CMMTimer::m_hpFrequency = 0;

CMMTimer::CMMTimer()
{
	// 1ms扨埵傪曐徹偡傞堊偩偗偵屇傇乧側傫偪傘偆巇條偠傖
	if( !m_bInitialize ) {
		if( ::timeBeginPeriod( 1 ) == TIMERR_NOERROR )
			m_bInitialize = TRUE;
	}

	// 僴僀僷僼僅乕儅儞僗僇僂儞僞偱偺帪娫寁應梡
	if( ::QueryPerformanceFrequency( (LARGE_INTEGER*)&m_hpFrequency ) ) {
		DEBUGOUT( "CMMTimer:Use high performance counter.(QueryPerformanceCounter)\n" );
		m_bHigh = TRUE;
	}
}

CMMTimer::~CMMTimer()
{
	if( m_bInitialize ) {
		::timeEndPeriod( 1 );
		m_bInitialize = FALSE;
	}
}

SQWORD	CMMTimer::GetMMTimer()
{
	if( m_bHigh ) {
		SQWORD	freq;
		::QueryPerformanceCounter( (LARGE_INTEGER*)&freq );

		return	freq;
	}

	return	(SQWORD)::timeGetTime();
}

FLOAT	CMMTimer::CalcTimeDifference( SQWORD t0, SQWORD t1 )
{
	if( m_bHigh ) {
		return	(FLOAT)(1000.0*(double)(t1-t0)/(double)m_hpFrequency);
	}

	return	(FLOAT)(t1-t0)*1000.0f;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -