使用timesetevent,时间间隔33ms, 每秒将产生10ms的误差。
解决方案 »
- htons与htonl函数功能一样吗?
- 运行错误怎么解决啊
- MFC CTabCtrl 控件问题?
- 见鬼了,奇怪的键盘钩子问题!!!!!!!!!
- 新手请各位大侠指点
- 求MFC Windows程序设计(第二版) 附书源码
- 函数调用控件的问题
- 请教,如何使利用WebBrowser建立的浏览器实现收藏,并实现脱机使用。
- 关于组件注册(Jmail),100分送上
- :100分求ANSI和ISO制定的SQL语言标准。最好是SQL-92标准,我上不了国际网,没法下载,哪位有请帮帮忙。详情请见:http://www.csdn.net/Expert/topic/436/436684.shtm
- VC中在哪定义结构体
- 问一个菜问题:用ADO数据库编程,SQLServer和Oracle有区别吗?
#define TIMETICKER_H// TimeTick.h : interface of the CTimeTick class
//
/////////////////////////////////////////////////////////////////////////////
//
// Copyright ?2001, Stefan Belopotocan, http://welcome.to/BeloSoft
//
/////////////////////////////////////////////////////////////////////////////#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000/////////////////////////////////////////////////////////////////////////////
// CTimeTickclass CTimeTick
{
CTimeTick(const CTimeTick& d);
CTimeTick& operator=(const CTimeTick& d);public:
CTimeTick();
~CTimeTick(); // Operations
void Start();
float Tick();
bool isPerformanceCounter() {return m_nPerformanceFrequency;} // Implementation
protected:
static __int64 GetPerformanceFrequency();
static float GetTimeInMilliSeconds(__int64 nTime); // Data
private:
static __int64 m_nPerformanceFrequency; LARGE_INTEGER m_nTimeElapsed;
LARGE_INTEGER m_nTime;
};#endif // !defined(TIMETICKER_H)
// TimeTick.cpp : implementation of the CTimeTick class
//
/////////////////////////////////////////////////////////////////////////////
//
// Copyright ?2001, Stefan Belopotocan, http://welcome.to/BeloSoft
//
/////////////////////////////////////////////////////////////////////////////#include "stdafx.h"
#include "TimeTick.h"#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// CTimeTick__int64 CTimeTick::m_nPerformanceFrequency = CTimeTick::GetPerformanceFrequency();CTimeTick::CTimeTick()
{
m_nTimeElapsed.QuadPart = 0;
m_nTime.QuadPart = 0;
}CTimeTick::~CTimeTick()
{
}void CTimeTick::Start()
{
if (m_nPerformanceFrequency)
QueryPerformanceCounter(&m_nTimeElapsed);
m_nTime.QuadPart = 0;
}float CTimeTick::Tick()
{
LARGE_INTEGER nTime; if (m_nPerformanceFrequency){
QueryPerformanceCounter(&nTime); float nTickTime = GetTimeInMilliSeconds(nTime.QuadPart - m_nTimeElapsed.QuadPart);
m_nTimeElapsed.QuadPart = nTime.QuadPart; return nTickTime;
}
return 0.0f;
}__int64 CTimeTick::GetPerformanceFrequency()
{
LARGE_INTEGER nPerformanceFrequency; if (QueryPerformanceFrequency(&nPerformanceFrequency))
return nPerformanceFrequency.QuadPart;
else
return 0;
}float CTimeTick::GetTimeInMilliSeconds(__int64 nTime)
{
return ((float) (nTime*1000i64)) / ((float) m_nPerformanceFrequency);
}
这两个函数是VC提供的仅供Windows 95及其后续版本使用的精确时间函数,其精度与CPU的时钟频率有关,并要求计算机从硬件上支持精确定时器