为了方便修改CEdit的文字及背景色,写了子类CColorEdit.
重载了CtlColor
- C/C++ code
HBRUSH CColorEdit::CtlColor(CDC* pDC, UINT nCtlColor){ pDC->SetTextColor(m_TextColor); pDC->SetBkColor(m_TextBkColor); return m_BrushBk;}
但是之后发现,输入文字后背景没有刷新,输多了就像重叠在一起一样,一片模糊,请问这个问题应该如何解决,谢谢。
------解决方案--------------------------------------------------------
,是不是要窗体重画啊???
::SetBkMode(WindowDC,TRANSPARENT);
设CEdit的句柄是hwnd
::RedrawWindow(hwnd,NULL,NULL,RDW_INVALIDATE|RDW_ERASE|RDW_ERASENOW); //清空背景
然后再加载文字,
------解决方案--------------------------------------------------------
加上
CEdit::OnCtlColor(pDC,this,nCtlColor);
------解决方案--------------------------------------------------------
.....onchange 试试,我不能完全保证
------解决方案--------------------------------------------------------
m_BrushBk不要用空画刷,改成m_BrushBk.CreateSolidBrush(m_TextBkColor)。