質問: hwnd; // グローバル変数にウィンドウハンドルを格納 return true; } ----------------------------- ※上記関数のほかにも、こちらのcppファイル(ファイル(1))には、 apientry _twinmain関数や、callback wndproc関数などの大元が含まれています。 invalidaterect関数を使っているのは、他のcppファイル(ファイル(2))ということです。
回答: invalidaterectは、windowsに対して対象のウィンドウに無効領域があることを知らせます。 しかし、windowsはすぐに描画をするわけではありません。 処理に優先順位をつけ、優先順位の高い処理から行います。画面の更新は、windowsの処理の中ではかなり優先順位の低い部類に入ります。そのため、重い処理をすると、画面が更新されなくなったりすのです。 そもそもwindowsの場合、1つのメッセージを処理している間は、基本的に別のメッセージを処理できません。メッセージを処理して、wndprocからwindowsへ制御を移さないと、次のメッセージの処理は走りません。なので、無限ループのように長時間windowsに制御を戻さないようなことをすると、画面の更新どころかボタンクリックなどの処理もされなくなります。 というわけで、invalidaterectを実行しても、すぐに画面が更新されるわけではありません。 すぐに更新したい場合は、updatewinodwを呼び出します。