我正在编写一个程序,我想每秒调用一个函数。我使用GetSystemTime()来获取时间,并且我已经声明了if以检查前一秒是否等于当前秒,如果不是,则加载该函数。这是代码:
int prevsec = cursec;
SYSTEMTIME systime;
GetSystemTime(&systime);
cursec = systime.wSecond;
curmsec = systime.wMilliseconds;
if ( curmsec - prevmsec > 100 )
{
prevmsec = curmsec;
startgame();
}
if ( prevsec != cursec )
{
prevmsec = 0;
startfunction();
}
我唯一的问题是,我不知道把它放在哪里;如果我把它放在我的Windows程序的开头,就像我现在所做的那样,它将检查它是否应该在每次发送新消息时加载该函数,因此当窗口打开而你没有做任何事情时,它赢了检查时间是否已经改变,因此无法正常工作。我想知道是否有一个我可以放置代码的地方,所以它只是继续检查时间(比如在无限循环中),而不会看到“无响应”消息。我希望你理解这个问题,谢谢你:)。
答案 0 :(得分:2)
使用SetTimer函数每秒获取一次WM_TIMER消息。
注意: Windows对此类事情并不十分可靠。你可能会在消息之间走几秒钟,或者在短时间内获得几个消息。