EditBoxに約10行くらいのテキストを書いています。
EditBoxで1回に表示出来る行は2行です。
その為、垂直にスクロールするのですが、1行でもスクロールすると、
前に表示されていたテキスト(1行目)が残像として残ってしまい、新しく
表示と重なってしまいます。
垂直スクロールバーをクリックした際には、再壁画をすれば文字は重ならないのですが、スクロールバーをつまんでおろすと、やはり文字の残像が残ってしまいます。
これを解決するためには、どのようにすれば良いのでしょうか?
よろしくお願いします。
私も同様に悩んでいます。
解決法をご存じの方、よろしくお願い致します。
全く説明不足でしたね。。。
多分、KKさんと同じ現象だと推測した上で、私の環境を書きます。
EditBoxは読み取り専用にしています。
WM_CTLCOLORメッセージを処理し、エディットの背景の描画色を白に変更しています。
EN_VSCROLLメッセージを処理し、CWnd::Invalidate() を行い、ダイアログを更新しています。
この状態でEditBoxにスクロール可能な文字列があった場合、スクロールバーをクリックしたり、ホイールマウスでスクロールする分には問題ないのですが、スクロールバーのスライダーをドラッグしたり、右クリックで「ここにスクロール」などを選択した場合など、文字が重なってしまいます。
OnCtlColor()の中で、EditBoxのカラーを処理するとき、
pDC->SetBkMode( TRANSPARENT ) ;
を行なうと、Ysさんのような現象が発生します。
EditBoxだけは、TRANSPARENT しないようにしないといけません。
おまけさん、ありがとうございました。
無事解決できました。
ちなみに次のようにしました。
EditBoxのみ
pDC->SetBkMode(OPAQUE);
とし、さらに
pDC->SetBkColor(RGB(255, 255, 255))
で背景色を白に変更するようにしました。
また、EN_VSCROLLメッセージの処理は不必要になったので削除しました。
いろいろありがとうございました。
ツイート | ![]() |