• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ダイアログベースの再描画について)

ダイアログベースの再描画について

このQ&Aのポイント
  • VC++6.0、MFC、ダイアログベースでアプリケーションの作成を行っている際に、リソースで作ったボタンやエディットボックスがダイアログの最小化や最大化時に再描画されずに消えてしまう現象について、解決方法を知りたい。
  • アプリケーションに機能を追加しようとしているが、ダイアログの最小化や最大化を行うと作成したボタンやエディットボックスが再描画されずに消えてしまう問題に直面している。アプリケーションの作成者に連絡できず、ネットでの情報収集も解決に至らなかった。どのような修正が必要なのか、知識不足のため具体的な解決策を教えてほしい。
  • VC++6.0、MFC、ダイアログベースのアプリケーションにおいて、ダイアログの最小化や最大化時にリソースで作成したボタンやエディットボックスが再描画されずに消えてしまう問題が発生している。作成者に連絡できず、ネットの情報収集でも解決策が見つからない。この問題を解決するためにはどのような修正が必要なのか教えてほしい。

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

  • ベストアンサー
回答No.1

 こんばんは。  MFCのダイアログベースを作成して、エディットx2、ボタンx2で実験してみました。  一応再現? らしき事は出来たのですが、処方箋になるかどうかは分かりません。  エディット・ボタンにOnPaint()関数が存在し、中身を処理していない時等は質問内容の様なトラブルが起こったりします。 ↓此れが犯人なのでは? void CTroubleButton::OnPaint() { CPaintDC dc(this); // 描画用のデバイス コンテキスト // TODO: この位置にメッセージ ハンドラ用のコードを追加してください // 描画用メッセージとして CButton::OnPaint() を呼び出してはいけません }  既存(正常な)のボタン・エディットに、上記の関数が存在しなくて、トラブルを起こしている方のボタン・エディットに、上記の関数が存在しているのであるならば、ClassWizardで上記関数を削って見ては如何でしょう(無ければ普通に表示されます)。  上記関数内に処理を入れている場合は、再描画の処理を書き忘れているのでは無いでしょうか。それ以外のケースでは、私には分かりません・・・。

hukube
質問者

お礼

返答が遅れまして申し訳ありません。 おかげさまでどうにかこうにか解決することができました。 再描画をそのボタンだけ行っていなかったので、そこで再描画処理を行いましたら、解決しました。アドバイス、ありがとうございました。

関連するQ&A