为什么我们需要在ShowWindow之后调用UpdateWindow?

Ada*_*Lee 9 windows winapi

ShowWindow(g_hWnd, 1);
UpdateWindow(g_hWnd);
Run Code Online (Sandbox Code Playgroud)

我想知道为什么我们需要打电话UpdateWindow跟随ShowWindow

Han*_*ant 8

这是完全没必要的,如果没有它,你的窗户会画得很好.

如果您的程序在创建窗口之后但在进入消息循环之前完成了许多工作,那么您将从中看到一个小的好处.用户需要注意一些事情.启动画面是更典型的方法.


Jee*_*eva 5

ShowWindow没有重绘窗口.调用UpdateWindowWM_PAINT消息发送到窗口然后重新绘制它.


mit*_*ity 5

通常,WM_PAINT仅当消息队列为空时,系统才会发送.在正常情况下这是足够好的,它实际上优化了很多不必要的重绘.队列中的消息通常会改变应用程序状态,这通常会导致部分窗口无效,从而导致另一个绘制(因此用户看到新的应用程序状态).因此重绘只是在处理完所有这些消息之后才发生,并且系统认为新窗口内容将在一段时间内有效(直到另一个消息进入队列).

但是,如果您需要WM_PAINT立即强行并绕过上面的逻辑,您可以WM_PAINT通过调用强制发送(如果存在无效区域)UpdateWindow().