OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

再描画の一般的な方法

  • 暇なときにでも
  • 質問No.196186
  • 閲覧数70
  • ありがとう数1
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 59% (194/328)

再描画の一般的な方法を教えてください。


セレクトボックスとテキストボックスが2つずつ。

□■□□
2番が選択されています

□□□■
4番が選択されています

こんな窓が、別窓に隠れてから復活して再描画する場合、
case WM_PAINT: でセレクトボックスのチェック状態を
調べるのはよくなく、再描画のために、フラグを用意して、
セレクトボックスに変化があった場合はフラグを書き替えて、
テキストボックスの描画はフラグの値を参照した方がいいと
思いました。
この例の場合はセレクトボックスを調べるだけだから
セレクトボックスを調べてもいいと思うけど、もっと複雑な計算をしたり
大きなファイルを読み込ませた結果でテキストボックスの値が決まる場合の
ことを考えたら、フラグを用意するのがいいと思いました。

でも、セレクトボックスとテキストボックスがもっとたくさんあったり
した場合には、フラグの数が多くなるから、フラグを参照するより、
再描画のために、表示に変化があった場合には、窓のクライアント全体を
メモリに保存しておいて、再描画ではメモリから表示した方がいいとも
思いました。

たくさんの種類のセレクトボックスとか文字とかがある窓は
普通はどんな風に再描画させているんですか?
通報する
  • 回答数1
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.1

またまた、お邪魔します。
以前の質問と同じような回答になるのですが、これも別ウィンドウですから、親ウィンドウの WM_PAINT とは無関係です。それぞれのコントロールは無効領域が発生すると勝手に再描画します。標準のコントロールだけを貼り付けたダイアログボックを作成する場合、おそらく描画処理は一切必要無いでしょう。

状態の取得に関しては、そのたびに SendMessage するのでもいいのですが、コントロールによっては変更された事を親ウィンドウに通知してくるものもあるので、そのメッセージを拾って変数に保存するようにすれば、よりイベントドリブンな無駄の少ないプログラムになると思います。
お礼コメント
A__

お礼率 59% (194/328)

まだそれを作ってなくて、想像だけで再描画が大変だと
思っていたけど、これもそれぞれのオブジェクトが別窓
だから再描画の必要がなかったんですねー。
それを考えたら、TextOut( ) がたくさんある hWnd の
再描画は、TextOut( ) を hWnd でなく、
CreateWindow( ) で別窓に書けば、条件による
書き換えとか再描画が楽になると思いました。

状態の取得は SendMessage(hWnd, ... がよさそうですか。
ありがとうございます。
投稿日時 - 2002-01-12 23:06:47
-PR-
-PR-
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ