お世話になります。
現在エディットボックスの「色変更」&「縦スクロール」の組み合わせで
不具合が発生していまして、お知恵を拝借したいと思っています。
【環境】
Win2000(SP2)
VC6(SP5)
MFC使用
【各条件】
・対象となるエディットボックスのプロパティ
複数行にチェック
水平スクロールバーにチェック
水平オートスクロールにチェック
垂直スクロールバーにチェック
垂直オートスクロールにチェック
改行を許可にチェック
読み取り専用にチェック
・色変更処理
HBRUSH CxxxDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if( pWnd->GetDlgCtrlID() == IDC_EDIT_xxx )
{
pDC->SetBkMode(TRANSPARENT);
return( Cxxx::GetColor(xxx) ) ;// エディットボックス背景色用ブラシ返却
}
return Cxxx::CtlColor( pDC, pWnd, nCtlColor ) ;// ダイアログ背景等用ブラ
シ返却
}
【事象】
1.エディットボックスへスクロールできる程度の行数の文字列を設定します。
2.マウスで縦スクロールさせます。
3.スクロールで新たに見えるようになった部分に元々その位置にあった表示が残って
しまい、文字が重なって表示されてしまいます。
【推測】
pDC->SetBkMode(TRANSPARENT);
この処理により「背景を透過」に指定しているのが原因となっているとは
思うのですが、この処理を行わないと文字の背景がシステム標準の色に
なってしまうので、この処理を削除するわけにはいきません。
ヘルプや過去ログを参照しましたが解決策が見出せなかったので質問させていただきました。
よろしくお願いいたします。
TRANSPARENTは使わずにSetBkColorを使用する。
http://www24.cds.ne.jp/~neg/pro/piyo1/dialog/color.html
> TRANSPARENTは使わずにSetBkColorを使用する。
早速の回答ありがとうございます。
問題は解決しました。
これから今までの処理も見直ししなくては。。。
では。