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
(如果存在無效區域)。
這不是必需的。 –