C++/Win32 如何每秒加载一个函数

C++/Win32 How to load a function every second

本文关键字:一个 函数 加载 Win32 何每秒 C++      更新时间:2023-10-16

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

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

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