EditBoxのScrollの際の残像を残さないようにするには

解決


KK  2004-02-16 00:56:52  No: 53179

EditBoxに約10行くらいのテキストを書いています。
EditBoxで1回に表示出来る行は2行です。
その為、垂直にスクロールするのですが、1行でもスクロールすると、
前に表示されていたテキスト(1行目)が残像として残ってしまい、新しく
表示と重なってしまいます。
垂直スクロールバーをクリックした際には、再壁画をすれば文字は重ならないのですが、スクロールバーをつまんでおろすと、やはり文字の残像が残ってしまいます。
これを解決するためには、どのようにすれば良いのでしょうか?
よろしくお願いします。


Ys  2004-11-16 02:27:24  No: 53180

私も同様に悩んでいます。
解決法をご存じの方、よろしくお願い致します。


Ys  2004-11-16 20:01:47  No: 53181

全く説明不足でしたね。。。
多分、KKさんと同じ現象だと推測した上で、私の環境を書きます。

EditBoxは読み取り専用にしています。
WM_CTLCOLORメッセージを処理し、エディットの背景の描画色を白に変更しています。
EN_VSCROLLメッセージを処理し、CWnd::Invalidate() を行い、ダイアログを更新しています。

この状態でEditBoxにスクロール可能な文字列があった場合、スクロールバーをクリックしたり、ホイールマウスでスクロールする分には問題ないのですが、スクロールバーのスライダーをドラッグしたり、右クリックで「ここにスクロール」などを選択した場合など、文字が重なってしまいます。


おまけ  2004-11-16 22:04:56  No: 53182

OnCtlColor()の中で、EditBoxのカラーを処理するとき、
pDC->SetBkMode( TRANSPARENT )  ;
を行なうと、Ysさんのような現象が発生します。

EditBoxだけは、TRANSPARENT しないようにしないといけません。


Ys  2004-11-16 22:57:23  No: 53183

おまけさん、ありがとうございました。
無事解決できました。

ちなみに次のようにしました。
EditBoxのみ
pDC->SetBkMode(OPAQUE);
とし、さらに
pDC->SetBkColor(RGB(255, 255, 255))
で背景色を白に変更するようにしました。
また、EN_VSCROLLメッセージの処理は不必要になったので削除しました。

いろいろありがとうございました。


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

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






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