📄 ustime.h
字号:
/************************************************************
* 函数BOOL QueryPerformanceFrequency (LARGE_INTEGER *lpFrequency);
* 函数BOOL QueryPerformanceCounter (LARGE_INTEGER *lpCount);
* 的参数的数据类型LARGE_INTEGER的声明。
* typedef union _LARGE_INTEGER
* {
* struct{
* DWORD LowPart ; // 4字节整型数
* LONG HighPart ; // 4字节整型数
* };
* LONG QuadPart ; // 8字节整型数
* } LARGE_INTEGER ;
************************************************************/
class usTime
{
public:
usTime()
{
//取高精度运行计数器的频率,若硬件不支持则返回FALSE
if( !QueryPerformanceFrequency( &frequence) )
AfxMessageBox("Your computer hardware doesn't support the high-resolution performance counter");
}
/////////////////////////////////////////////////////////////////////////
LONG MySleep(DWORD usNum )
// 功能:执行实际的延时功能,Interval 参数为需要执行的延时与时间有关的数量,此函数返回执//行后实际所用的时间有关的数量 ;
{
LARGE_INTEGER sleepNUm, privious ,current, Elapse;
//通过频率换算微秒数到对应的数量(与CPU时钟有关),1秒=1000000微秒;
sleepNUm.QuadPart = frequence.QuadPart * usNum / 1000000;
QueryPerformanceCounter( &privious );
current = privious;
while( current.QuadPart - privious.QuadPart < sleepNUm.QuadPart )
QueryPerformanceCounter( ¤t );
Elapse.QuadPart = current.QuadPart - privious.QuadPart;
Elapse.QuadPart = LONG(1000000 * Elapse.QuadPart / frequence.QuadPart ); //换算到微秒数;
return Elapse.QuadPart;
}
LONG WaitNTus(DWORD usNum , LARGE_INTEGER privious)
// 功能:执行实际的延时功能,Interval 参数为需要执行的延时与时间有关的数量,此函数返回执//行后实际所用的时间有关的数量 ;
{
LARGE_INTEGER sleepNUm, current, Elapse;
//通过频率换算微秒数到对应的数量(与CPU时钟有关),1秒=1000000微秒;
sleepNUm.QuadPart = frequence.QuadPart * usNum / 1000000;
//QueryPerformanceCounter( &privious );
current = privious;
while( current.QuadPart - privious.QuadPart < sleepNUm.QuadPart )
QueryPerformanceCounter( ¤t );
Elapse.QuadPart = current.QuadPart - privious.QuadPart;
Elapse.QuadPart = LONG(1000000 * Elapse.QuadPart / frequence.QuadPart ); //换算到微秒数;
return Elapse.QuadPart;
}
private:
LARGE_INTEGER frequence;
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -