トップ > メモ

Win32APIプログラミング - ある条件下でInvalidateRect関数の第三引数をTRUEにすると以降描画されない。

要するにやりたいことは一度画面をまっさらにして
再描画したいということです。

ただ単に見落としていた自分が悪いのかもしれませんが、
描画するときのデバイスコンテキストハンドルを取得するときに
GetDC関数を取得して描画しているとこの状態になります。
まとめると大体こんな感じでしょうか。
・・・InvalidateRect()→WM_PAINT→GetDC()→ReleaseDC()・・・

まぁ、なぜこうなるのかはよくわかりませんが
(というか、ただ単にこういう仕様なんだと思う)
正常に動く方法を書きます。
・・・InvalidateRect()→WM_PAINT→BeginPaint()→EndPaint()・・・
使用する関数を変更するだけです。

このことはあまり本とかWebページを探しても書いてなかったように見受けられます。
ただ、MSDNにはしっかりと「TRUEを指定すると、BeginPaint 関数を呼び出したときに背景が消去されます。」
と言う記述があるので、見落とした自分が悪いわけです。

以上、今回はこれで40分ぐらい悩みました。

コメント送信フォーム

このコメントはメールで送信され、直接表示されることはありません。
ただし、コメントの内容を引用することはあります。

内容(半角:100000文字)


以下の項目は任意です(特に返信が必要な場合、メールアドレスをお書きください)
お名前(半角:100文字)  
メールアドレス(255文字)

認証のためのキーとして、今日の年月日を入力してください。
例えば、2007年8月24日の場合「20070824」と入力します。


  


一覧へ戻る

トップに戻る

作成日時:2005年 01月 08日 21時 19分 29秒