13
ShowWindow(g_hWnd, 1);
UpdateWindow(g_hWnd);

なぜ?にUpdateWindow続いて呼び出す必要があるのか​​ 疑問に思っています。ShowWindow

4

4 に答える 4

12

それは完全に不要です、あなたの窓はそれなしでうまくペイントします。

ウィンドウを作成した後、メッセージループに入る前に、プログラムが多くのことを実行しなくなった場合、それによる小さな利点がわかります。ユーザーは何かを見る必要があります。スプラッシュスクリーンがより一般的なアプローチです。

于 2012-06-20T12:33:15.190 に答える
7

ShowWindowウィンドウを再描画しません。への呼び出しはメッセージをウィンドウにUpdateWindow送信し、再描画します。WM_PAINT

于 2012-06-20T11:25:11.647 に答える
6

通常、システムWM_PAINTはメッセージ キューが空の場合にのみ送信します。通常の状況ではこれで十分であり、実際には多くの不要な再描画を最適化します。キュー内のメッセージはアプリケーションの状態を変更することが多く、その結果、ウィンドウの一部が無効になり、さらに別の描画が行われます (ユーザーは新しいアプリケーションの状態を確認できます)。そのため、そのようなメッセージがすべて処理された後に再描画が行われ、システムは新しいウィンドウのコンテンツがしばらくの間 (さらに別のメッセージがキューに入るまで) 有効であると見なします。

ただし、WM_PAINTすぐに強制して上記のロジックをバイパスする必要WM_PAINTがある場合は、(無効な領域がある場合) を呼び出して送信を強制できますUpdateWindow()

于 2012-06-22T08:33:35.370 に答える