pictureBoxを正常に再描画するには?

解決


GAKU  2010-03-07 01:47:04  No: 71468

直前に  ”かかしさん”の質問欄に回答の形で以下の文章を書いて送って  しまいました。消し方がわかりませんのでそのままにしています。
申し訳ありませんでした。
改めて新規質問で送らせてもらいました。

visual studio 2005 C++ MFC
ダイアログベースでアプリを開発しています。
ダイアログにピクチャーボックスを貼り付けて、OnPaint()関数内で
ピクチャボックスの背景を黒にする処理だけを入れていて気がついたのですが一点問題が発生してこまっています。

このアプリをモニターから外したり、他のアプリを横切らしたりした場合は
問題なく再描画されて黒くなるのですが、他のアプリを開いてピクチャボックスの上に持ってきてXボタンでいきなり閉じるとピクチャボックスの領域が
クライアント領域のベージュの色のままになってしまいます。
この状態でこのアプリを移動してモニターから外して再度もどしたら
正常に黒になります。

ブレークをかけると他のアプリをxボタンで閉じてもちゃんとOnPaint()に
飛んできて黒くする関数は実行しているようなのですが何故か黒になりません。
以下のコードをOnPaint()内で実行しています。

CClientDC myPictDC(&m_PICTURE1);
CRect myRect;
m_PICTURE1.GetClientRect(myRect);
myPictDC.FillSolidRect(myRect,RGB(0,0,0));//picture1 boxを黒にする。

CDialog::OnPaint();//これはもともとある関数

原因がなかなかつかめなくて困ってます。

よろしくお願いします。


ryo  2010-03-07 04:26:39  No: 71469

元からある関数の
CDialog::OnPaint();
これを先に処理するように変えてみてはどうかな


GAKU  2010-03-07 17:20:13  No: 71470

OnPaint()関数を最初に持ってきてやってみたら正常に表示するように
なりました。

ryoさん、有難うございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加