如何在控制台Win32应用程序中设置计时器
How to set a timer in a console Win32 app?
可能重复:
我可以在控制台c++应用中使用SetTimer()API吗
我希望在控制台win32应用程序中用c++创建一个计时器。我在谷歌上搜索了它,并找到了SetTimer()的大多数结果,但作为窗口控制或其他应用程序的例子。
我需要我的计时器来开始计数,在计时器开始后我调用一个函数,在计时器结束后,我调用另一个函数。我将使用线程。
我是c++的新手,所以这可以用SetTimer函数完成吗?
谢谢。
这不是你的方式,SetTimer
基于Windows消息系统,不会在控制台应用程序中工作。您将需要手动创建消息泵送循环,并进行其他几项工作,这些工作很难满足控制台应用程序结构和控制流的要求。
您可以改为使用Waitable Timers对象。它们是专门为将线程用作同步对象而设计的。
用法示例:
#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <stdio.h>
int main()
{
HANDLE hTimer = NULL;
LARGE_INTEGER liDueTime;
liDueTime.QuadPart=-100000000;
// Create a waitable timer.
hTimer = CreateWaitableTimer(NULL, TRUE, "WaitableTimer");
if (NULL == hTimer)
{
printf("CreateWaitableTimer failed (%d)n", GetLastError());
return 1;
}
printf("Waiting for 10 seconds...n");
// Set a timer to wait for 10 seconds.
if (!SetWaitableTimer(hTimer, &liDueTime, 0, NULL, NULL, 0))
{
printf("SetWaitableTimer failed (%d)n", GetLastError());
return 2;
}
// Wait for the timer.
if (WaitForSingleObject(hTimer, INFINITE) != WAIT_OBJECT_0)
printf("WaitForSingleObject failed (%d)n", GetLastError());
else printf("Timer was signaled.n");
return 0;
}
另请参阅观察Windows计时器的精彩文章:http://www.codeproject.com/Articles/1236/Timers-Tutorial
相关文章:
- Linux的Cpp上的计时器
- 提升 ASIO 无法识别计时器对象
- set_intersection使用自定义设置比较器
- 提升 asio 并发计时器取消问题与链
- 使用单体计时器的pthread_cond_timedwait有时会比预期晚超时
- 窗口中的微秒计时器
- 计时器是否从另一个线程启动?
- 如何在 c++ 中创建计时器
- C++回调计时器实现
- 在虚幻引擎C++中设置计时器
- 设置Windows计时器,访问被拒绝
- 如何设置一个"precise"的定期计时器来监控Linux(C / C++)中的内容?
- 设置可等待计时器和夏令时调整
- 为什么计时器工作了这么多次,甚至我设置它的repeat=false
- 如何在没有外部计时器的情况下设置 QNetworkReply 超时
- 如何在控制台Win32应用程序中设置计时器
- 无法更改设置计时器值
- 如何为文本设置计时器
- 在计时器类中设置速度系数
- c++ /CLI system . timers .当设置Interval为100ms时,计时器以秒为单位经过20秒