我有一个非只读的编辑控件,我需要更改它的颜色,所以我处理 WM_CTLCOLOREDIT。当我连续输入时效果很好,但问题是当我按退格键或删除甚至从现有文本的中间开始输入时,显示全部被破坏。这一直存在,直到我通过调整父级等来重新绘制。如何解决这个问题?
编辑:一些细节。只有在设置了背景颜色而不是仅设置了文本颜色时,才会出现问题。代码看起来像这样
ON_MESSAGE(WM_CTLCOLOREDIT, OnEditColor)
LRESULT CMyWindow::OnEditColor(WPARAM wp, LPARAM lp)
{
HDC hdc = (HDC)wp;
HWND hwnd = (HWND)lp;
if(hwnd == m_edit.GetSafeHwnd())
{
// SetBkMode(hdc, TRANSPARENT);
MyControlInfo*pcti;// accessed from somewhere
SetTextColor(hdc, pcti->theme.clrText);
// return (LRESULT)pcti->brush.GetSafeHandle();
}
return 0;
}
谢谢