我有一个对话框,其中编辑框被禁用,但文本应显示为红色而不是默认的灰色。我尝试了以下方法:
void CMyEdit::OnEnable(BOOL bEnable)
{
CEdit::OnEnable(bEnable);
if (bEnable)
{
m_BackGroundColor = kRGBWhite;
}
else
{
m_BackGroundColor = kRGBDefaultGray;
}
m_TextColor = kRGBRed;
m_BackgroundBrush.DeleteObject();
m_BackgroundBrush.CreateSolidBrush(m_BackGroundColor);
Invalidate();
}
但它仍然仅以灰色显示文本。但是如果我删除基类调用CEdit::OnEnable(bEnable);
,那么新的文本颜色就会生效。谁能解释代码中有什么问题?
谢谢你的时间。
干杯...
编辑:(将我的评论移至编辑)对不起,我忘了在我的原始帖子中提及它。不是处理 ON_WM_CTLCOLOR(),而是处理 ON_WM_CTLCOLOR_REFLECT()。我不明白的是,删除对基类的调用会将文本的颜色更改为指定的颜色,但保留它只会将其更改为默认灰色。