※ ChatGPTを利用し、要約された質問です(原文:再描画の一般的な方法)
再描画の一般的な方法とは?
このQ&Aのポイント
再描画の一般的な方法を教えてください。セレクトボックスとテキストボックスがある場合、再描画のためにフラグやメモリの利用が考えられます。
再描画にはセレクトボックスのチェック状態を調べる方法やフラグを利用する方法があります。テキストボックスの描画はフラグの値を参照すると良いでしょう。
複雑な計算やファイルの読み込み結果によってテキストボックスの値が決まる場合には、フラグを用意して再描画することが推奨されます。また、セレクトボックスやテキストボックスが多い場合には、メモリを利用して再描画する方法も考えられます。
再描画の一般的な方法を教えてください。
セレクトボックスとテキストボックスが2つずつ。
□■□□
2番が選択されています
□□□■
4番が選択されています
こんな窓が、別窓に隠れてから復活して再描画する場合、
case WM_PAINT: でセレクトボックスのチェック状態を
調べるのはよくなく、再描画のために、フラグを用意して、
セレクトボックスに変化があった場合はフラグを書き替えて、
テキストボックスの描画はフラグの値を参照した方がいいと
思いました。
この例の場合はセレクトボックスを調べるだけだから
セレクトボックスを調べてもいいと思うけど、もっと複雑な計算をしたり
大きなファイルを読み込ませた結果でテキストボックスの値が決まる場合の
ことを考えたら、フラグを用意するのがいいと思いました。
でも、セレクトボックスとテキストボックスがもっとたくさんあったり
した場合には、フラグの数が多くなるから、フラグを参照するより、
再描画のために、表示に変化があった場合には、窓のクライアント全体を
メモリに保存しておいて、再描画ではメモリから表示した方がいいとも
思いました。
たくさんの種類のセレクトボックスとか文字とかがある窓は
普通はどんな風に再描画させているんですか?
お礼
まだそれを作ってなくて、想像だけで再描画が大変だと 思っていたけど、これもそれぞれのオブジェクトが別窓 だから再描画の必要がなかったんですねー。 それを考えたら、TextOut( ) がたくさんある hWnd の 再描画は、TextOut( ) を hWnd でなく、 CreateWindow( ) で別窓に書けば、条件による 書き換えとか再描画が楽になると思いました。 状態の取得は SendMessage(hWnd, ... がよさそうですか。 ありがとうございます。