Winapi 调用过频繁会阻止其他窗口重新绘制

Winapi 调用过频繁会阻止其他窗口重新绘制,winapi,invalidation,wm-paint,Winapi,Invalidation,Wm Paint,我开发了音频插件,这些插件在它们的主机内运行并实时工作。每个插件都有自己的带有控件的窗口,其中通常包含某种分析窗格,一个相当大的矩形,可以重复绘制,例如每秒20-50次。这一切都很好 当用户调整一个参数时,问题就来了——该插件使用WM_MOUSEMOVE跟踪鼠标移动,并在每次更改时调用::invalidate,以重新绘制窗口的相关部分。如果移动速度足够快,窗口确实会很快重新绘制,但是主机和其他窗口似乎没有时间重新绘制,而且这些窗口通常也会执行某种类型的分析反馈,因此这并不理想 不,我的问题是:

我开发了音频插件,这些插件在它们的主机内运行并实时工作。每个插件都有自己的带有控件的窗口,其中通常包含某种分析窗格,一个相当大的矩形,可以重复绘制,例如每秒20-50次。这一切都很好

当用户调整一个参数时,问题就来了——该插件使用WM_MOUSEMOVE跟踪鼠标移动,并在每次更改时调用::invalidate,以重新绘制窗口的相关部分。如果移动速度足够快,窗口确实会很快重新绘制,但是主机和其他窗口似乎没有时间重新绘制,而且这些窗口通常也会执行某种类型的分析反馈,因此这并不理想

不,我的问题是: 1假设主机和其他窗口也在使用::invalidate,那么为什么我的窗口优先? 2如何使::invalidate不具有优先级,这意味着窗口需要失效,但可能会在以后失效,系统的其余部分也必须有时间重新绘制


提前谢谢

在我看来,你最好同步进行鼠标移动绘制更新。你也在调用UpdateWindow吗?这迫使油漆立即发生,听起来像是发生了什么。如果你只是在不调用UpdateWindow的情况下使一个窗口无效,那么画图不应该优先于其他消息。谢谢大家。它不是真正的同步,它是在定时器设置为30毫秒。我不叫UpdateWindow或类似的东西。