ShowWindow(g_hWnd, 1);
UpdateWindow(g_hWnd);
我想知道为什么我们需要拨打UpdateWindow
继ShowWindow
之后?为什么我们需要在ShowWindow之后调用UpdateWindow?
ShowWindow(g_hWnd, 1);
UpdateWindow(g_hWnd);
我想知道为什么我们需要拨打UpdateWindow
继ShowWindow
之后?为什么我们需要在ShowWindow之后调用UpdateWindow?
ShowWindow
不重画窗口。对UpdateWindow
的呼叫向该窗口发送WM_PAINT
消息并因此重新绘制该消息。
这完全没有必要,你的窗户在没有它的情况下也能很好地完成。
如果您的程序在创建窗口之后但在进入消息循环之前关闭了很多东西,您会看到它的一个小优点。用户有需要看的东西。闪屏是更典型的方法。
正常情况下,只有在消息队列为空的情况下,系统才会发送WM_PAINT
。在正常情况下,这足够好,它实际上优化了大量不必要的重绘。队列中的消息通常会改变应用程序状态,这通常会导致部分窗口无效,从而导致又一次绘制(因此用户会看到新的应用程序状态)。因此,在处理完所有这些消息之后,系统会认为新窗口内容将有效一段时间(直到另一个消息进入队列),重新绘制才会发生。
但是,如果您需要立即强制WM_PAINT
并绕过上述逻辑,则可以通过调用UpdateWindow()
强制发送WM_PAINT
(如果存在无效区域)。
这不是必需的。 –