ShowWindow(g_hWnd, 1);
UpdateWindow(g_hWnd);
なぜ?にUpdateWindow
続いて呼び出す必要があるのか 疑問に思っています。ShowWindow
それは完全に不要です、あなたの窓はそれなしでうまくペイントします。
ウィンドウを作成した後、メッセージループに入る前に、プログラムが多くのことを実行しなくなった場合、それによる小さな利点がわかります。ユーザーは何かを見る必要があります。スプラッシュスクリーンがより一般的なアプローチです。
ShowWindow
ウィンドウを再描画しません。への呼び出しはメッセージをウィンドウにUpdateWindow
送信し、再描画します。WM_PAINT
通常、システムWM_PAINT
はメッセージ キューが空の場合にのみ送信します。通常の状況ではこれで十分であり、実際には多くの不要な再描画を最適化します。キュー内のメッセージはアプリケーションの状態を変更することが多く、その結果、ウィンドウの一部が無効になり、さらに別の描画が行われます (ユーザーは新しいアプリケーションの状態を確認できます)。そのため、そのようなメッセージがすべて処理された後に再描画が行われ、システムは新しいウィンドウのコンテンツがしばらくの間 (さらに別のメッセージがキューに入るまで) 有効であると見なします。
ただし、WM_PAINT
すぐに強制して上記のロジックをバイパスする必要WM_PAINT
がある場合は、(無効な領域がある場合) を呼び出して送信を強制できますUpdateWindow()
。