我想在c ++中,在控制台win32应用程序中创建一个计时器.我谷歌它并找到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;
}
Run Code Online (Sandbox Code Playgroud)
另见观察Windows计时器的好文章:http://www.codeproject.com/Articles/1236/Timers-Tutorial