再描画の一般的な方法を教えてください。
セレクトボックスとテキストボックスが2つずつ。
□■□□
2番が選択されています
□□□■
4番が選択されています
こんな窓が、別窓に隠れてから復活して再描画する場合、
case WM_PAINT: でセレクトボックスのチェック状態を
調べるのはよくなく、再描画のために、フラグを用意して、
セレクトボックスに変化があった場合はフラグを書き替えて、
テキストボックスの描画はフラグの値を参照した方がいいと
思いました。
この例の場合はセレクトボックスを調べるだけだから
セレクトボックスを調べてもいいと思うけど、もっと複雑な計算をしたり
大きなファイルを読み込ませた結果でテキストボックスの値が決まる場合の
ことを考えたら、フラグを用意するのがいいと思いました。
でも、セレクトボックスとテキストボックスがもっとたくさんあったり
した場合には、フラグの数が多くなるから、フラグを参照するより、
再描画のために、表示に変化があった場合には、窓のクライアント全体を
メモリに保存しておいて、再描画ではメモリから表示した方がいいとも
思いました。
たくさんの種類のセレクトボックスとか文字とかがある窓は
普通はどんな風に再描画させているんですか?
No.1ベストアンサー
- 回答日時:
またまた、お邪魔します。
以前の質問と同じような回答になるのですが、これも別ウィンドウですから、親ウィンドウの WM_PAINT とは無関係です。それぞれのコントロールは無効領域が発生すると勝手に再描画します。標準のコントロールだけを貼り付けたダイアログボックを作成する場合、おそらく描画処理は一切必要無いでしょう。
状態の取得に関しては、そのたびに SendMessage するのでもいいのですが、コントロールによっては変更された事を親ウィンドウに通知してくるものもあるので、そのメッセージを拾って変数に保存するようにすれば、よりイベントドリブンな無駄の少ないプログラムになると思います。
まだそれを作ってなくて、想像だけで再描画が大変だと
思っていたけど、これもそれぞれのオブジェクトが別窓
だから再描画の必要がなかったんですねー。
それを考えたら、TextOut( ) がたくさんある hWnd の
再描画は、TextOut( ) を hWnd でなく、
CreateWindow( ) で別窓に書けば、条件による
書き換えとか再描画が楽になると思いました。
状態の取得は SendMessage(hWnd, ... がよさそうですか。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 電気工事士 第一種電気工事士実技試験の配線の寸法に関する欠陥について、 寸法(器具にあっては中心からの寸法)が, 1 2022/12/09 20:10
- Excel(エクセル) [クイックアクセスツールバー]の設定ファイルの格納場所について、 5 2023/04/21 14:43
- PDF PDFのテキストを追加機能 1 2022/06/18 12:45
- Excel(エクセル) 名前と日付が一致する箇所にフラグを立てる関数が知りたいです 4 2022/08/11 02:24
- HTML・CSS 検索窓とcssハックについて 3 2022/04/22 12:21
- Visual Basic(VBA) Excel(VBA) 特定の条件に該当する行の値、書式を同じセルにコピ&ペーストしたいです 1 2022/05/21 18:18
- Excel(エクセル) ログインIDの一発入力? 5 2023/07/07 12:30
- Excel(エクセル) エクセル シート内のボックスを縦並びから横並びに 7 2023/04/05 04:28
- デザイン タブレットパソコンについて。 3 2022/10/22 15:19
- Visual Basic(VBA) エクセルマクロでアニメを作る方法を教えてください。 1 2023/02/07 14:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PCで「使用可能な場合はグラフ...
-
NVIDIAのシェーダーキャッシュ
-
最前面に無理やりフォームを持...
-
MFCのタイマーのつかい方を教え...
-
C#のタブコントロールについて...
-
ClistBoxでオーナードローがよ...
-
MFCでOnPaintのタイミング
-
VC++プログラムをつかったBMP画...
-
VB6,リストボックスの特定行の...
-
ドローソフトのダブルバッファ...
-
InvalidateRectの使い方について
-
GetGlyphOutline() ご利用経験...
-
当たり判定
-
陰関数のグラフを表示させるには
-
Pythonによる物理の斜方投射の...
-
CS_HREDRAW|CS_VREDRAWについて
-
扇形などを描く方法
-
OpenGLでの描画のタイミング
-
グラフの交点の求め方(Excel)
-
「アイテムは収集されました」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB6,リストボックスの特定行の...
-
[VB.net] DataGridViewの列ヘッ...
-
NVIDIAのシェーダーキャッシュ
-
MFCでOnPaintのタイミング
-
TextBoxに文字を書いても表示さ...
-
word
-
UpdateData( FALSE); による文...
-
VC++プログラムをつかったBMP画...
-
InvalidateRectの使い方について
-
OneNote 2010 文字と描画がずれる
-
StretchBlt関数について
-
C# ラバーバンドの描画を快適に...
-
エクセルでガンチャートを作成...
-
C++にて、塗りつぶされた円を描...
-
VBAにGDI+を参照させる方法
-
GDI+で高速な描画
-
MFC DrawText 背景色とフォント
-
FlexGridの一部のみ表示を更新...
-
MFCのタイマーのつかい方を教え...
-
Labelの文字をスクロールする際...
おすすめ情報