【发布时间】:2021-05-19 03:32:55
【问题描述】:
我正在尝试使用 QueryPerformanceCounter 和 QueryPerformanceFrequency 计时器,以便在我的 Windows 窗体 GUI (Visual C++) 中获得高分辨率时间戳。我的问题是我不知道在表单中使用它的确切方法。
我发现的示例清楚地描述了 StartCounter() 和 GetCounter() 但我想知道如何使用 MyForm.h 中的 button_Click 回调函数调用它
目标是在 GUI 中按下按钮后定期发送消息。
你能在这个问题上支持我吗?谢谢!
double PCFreq = 0.0;
__int64 CounterStart = 0;
double vartest = 0;
void StartCounter()
{
LARGE_INTEGER li;
//if (!QueryPerformanceFrequency(&li))
PCFreq = double(li.QuadPart);
QueryPerformanceCounter(&li);
CounterStart = li.QuadPart;
}
double GetCounter()
{
LARGE_INTEGER li;
QueryPerformanceCounter(&li);
return double(li.QuadPart - CounterStart) / PCFreq;
}
【问题讨论】:
-
如果您发现低级 API 很麻烦,您可以使用 C++ 中的标准时钟之一,例如
std::chrono::high_resolution_clock -
“目标是在 GUI 中按下按钮后定期发送消息。” - 那你为什么要轮询时间而不是使用适当的计时器类或SetTimer API 每 X 毫秒发布一条消息唤醒您?你知道怎么做吗?
标签: c++ performance time timer performancecounter