画面のチラつきをなくそうと flip の要領でオフスクリーンのデバイスコンテキストから画面のデバイスコンテキストへ BitBlt() しても、なおチラつきがとれない場合があります。
これは WM_PAINT と一緒に WM_ERASEBKGND というメッセージを受信していることが原因です。
WM_PAINT はウィンドウの再描画を指示するメッセージですが、 BeginPaint() の際に WM_ERASEBKGND メッセージを発行し、ウィンドウクラスを構築する際に渡したブラシで背景を塗りつぶしてしまいます。
つまり一瞬ウィンドウをクリアするための塗りつぶしが見えてしまうために画面がチラついて見えるというわけです。
この TIPS を教えてくれた某ギルドのL氏に多謝です!
Contributions