WM_PAINTは、画面の描画を要求された時に発生するウィンドウメッセージ・・・。
これまでは、WM_LBUTTONDOWNなどのイベントが発生したときに、そこで直接デバイスコンテキストを取得し、テキストやドット(点)などを描画してきた・・・。しかし、本来は、画面の再描画に対応するため、グラフィック処理はWM_PAINTでやるのが原則・・・。
WM_PAINTが発生したとき、画面を描画した回数を表示する・・・。
iCountは、ボタンが押された~、ではなく、画面が描画された回数・・・。つまり、WM_PAINTが発生した回数・・・。
WM_CREATEとWM_DESTROYからは、デバイスコンテキストの処理は消して、
WM_PAINTのとき、デバイスコンテキストを取得して、iCountを増やして、iCountをTextOutで描画、最後に解放・・・。
ではWM_PAINTが発生するときとはどういうときだろう・・・。
WM_PAINTは、ウィンドウのクライアント領域の一部が無効領域になった時(描画情報が消えたり、変更された時)に発生する・・・。
たとえば、
- そのウィンドウが画面外に出たり
- 他のウィンドウで隠れたり
- サイズが変更されたり
こんなときに発生する・・・。
(ただし、Windows7などDesktop Window Manager(DWM)を使うOSの場合は、他のウィンドウで隠されてもWM_PAINTが発生しない・・・。)
実行してみると、
"~ times painted!"の数値が1になっている・・・。
表示時に1回呼ばれる分・・・。
ウィンドウを画面外に追いやってから、戻してみると、
戻ってくるときに1~数ドット動くたびに再描画されるので、その回数だけ増える・・・。
かなり増えてる・・・。
最大化などをしても増えると思うので試してみるといい・・・。
[C#] Update Refresh Invalidate の画面更新について (Windows7)
Desktop Window Manager - Wikipedia