2

我正在编写一个程序,我想在其中每秒调用一个函数。我使用 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 过程的开头,就像我目前所拥有的那样,它会检查它是否应该在每次发送新消息时加载该函数,因此当窗口打开并且你没有做任何事情时,它会赢'不检查时间是否已更改,因此将无法正常工作。我想知道是否有一个地方可以放置代码,以便它继续检查时间(例如在无限循环中)而不会看到“无响应”消息。我希望你明白这个问题,谢谢:)

4

1 回答 1

2

使用SetTimer函数每秒获取一次 WM_TIMER 消息。

注意: Windows 在这类事情上并不是超级可靠的。您可能会在消息之间间隔几秒钟,或者在短时间内收到几条消息。

于 2013-09-22T13:15:13.377 回答