BeginPaint

BeginPaintは、WM_PAINT発生時に描画処理を行う前に呼ぶWindowsAPI・・・。

BeginPaint 関数

これまでは、GetDCでデバイスコンテキストハンドルを取得していたが、WM_PAINT時に描画する場合は、本来BeginPaintを呼んで描画の準備をし、そのデバイスコンテキストハンドルを使うのが原則・・・。
そして、BeginPaintの役目はただデバイスコンテキストハンドルを返すだけでなく、無効領域(描画を更新すべき領域、つまり更新領域)を有効にすることにある・・・。無効領域を有効にしないと、いつまでもWM_PAINTが送られてしまう・・・。
GetDCと他の関数でもできるが、BeginPaintとEndPaintで囲むのが一番いい・・・。

前回のWM_PAINTの頁のものを、GetDC/ReleaseDCから、BeginPaint/EndPaintに変更しただけ・・・。
PAINTSTRUCTは描画情報が入っている構造体・・・。まあ、あまりそこをいじることはないので、何も考えず渡しとけばいいという感じ・・・。

動作は変わらない・・・。

f:id:BG1:20150326110953p:plain

最初は1で、ウィンドウを端に追いやった後、元に戻すと、

f:id:BG1:20150326111039p:plain

12になってる・・・。

Sample/BeginPaint.cpp at master · bg1bgst333/Sample · GitHub