Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;windows暂停计时器_C++_C_Windows_Timer - Fatal编程技术网

C++ C++;windows暂停计时器

C++ C++;windows暂停计时器,c++,c,windows,timer,C++,C,Windows,Timer,我正在使用SetTimer在我的应用程序中创建一个间隔为50ms的计时器,这个计时器将用于绘制一个对象,并将其四处移动 现在我不希望对象在窗口失焦时移动,但我仍然需要对其进行绘制。 而且每50毫秒就涂一次,似乎没有必要。在这个项目中,性能非常重要 因此,我需要一种暂停计时器的方法,但仍然绘制对象,但最好仅在需要时绘制。当您激活WM\u时,决定是调用KillTimer还是SetTimer。请注意初始问题。 我不会依赖分辨率如此低的Windows计时器。这是一条低优先级消息,如果程序中有大量繁重的

我正在使用
SetTimer
在我的应用程序中创建一个间隔为50ms的计时器,这个计时器将用于绘制一个对象,并将其四处移动

现在我不希望对象在窗口失焦时移动,但我仍然需要对其进行绘制。 而且每50毫秒就涂一次,似乎没有必要。在这个项目中,性能非常重要


因此,我需要一种暂停计时器的方法,但仍然绘制对象,但最好仅在需要时绘制。

当您激活WM\u时,决定是调用KillTimer还是SetTimer。

请注意初始问题。

我不会依赖分辨率如此低的Windows计时器。这是一条低优先级消息,如果程序中有大量繁重的任务,计时器可能会以预期的更高间隔调用。

但如果计时器未运行,则不会绘制对象。我可以把它们放在
WM_-PAINT
中,然后从计时器中调用
WM_-PAINT
,但是调用
WM_-PAINT
,这通常看起来像是一个性能上的成功?好吧,下定决心吧。如果你让WM_ACTIVATE告诉你你不再活跃了,接下来会发生什么+1.我希望这些物体仍被粉刷,但只有在必要时,如果窗户不对焦的话。但是如果它在对焦,每50毫秒像平常一样画一次。你可以两者都做——当你在对焦时在计时器中画画,但总是对WM_画画做出反应,并在被要求时画出所有的东西。无论如何,你必须这样做才能成为一个表现良好的应用程序。你应该在WM_PAINT中进行所有绘制,并让你的计时器在包含对象的窗口部分执行一个无效的设置。