小弟我给Edit控件上背景色!总是上不了?最小化后就没有了

我给Edit控件上背景色!总是上不了?最小化后就没有了!
不知道怎么回事!麻烦啊。我在OnPaint里也添加了CtrlColor这个函数,也是上不了色!如果做一个按扭,然后单击是可以换到色,但一最小化之后又不见了。或者一填文件后又不见了。

C/C++ code

void CLCDTestDlg::CtrlColor() 
{
    // TODO: Add your control notification handler code here
    CWnd *pWnd;
    pWnd=GetDlgItem(IDC_EDIT);
    CDC *pDC=pWnd->GetDC();
    CRect rect;
    pWnd->GetClientRect(&rect);
    pDC->FillSolidRect(&rect,RGB(255,255,0));
    m_FullDlg.m_Color=RGB(255,255,0);
}




------解决方案--------------------
要改变控件的背景颜色,响应OnCtlColor消息就可以了

if(pWnd->GetDlgItemId()==IDC_EDIT)
{
pDC->SetBkMode(TRANSPARENT);
return ::CreateSolidBrush(RGB(255,255,0));
}
------解决方案--------------------
我想可能是你的程序OnPaint时,先执行了CtrlColor(),然后再画的空间,所以你上不了色而做个按扭点击据可以,最小化之后又不见了。你把CtrlColor()放到 OnPaint函数的最后一句去执行试一下^_^
------解决方案--------------------
1楼的GetDlgItemId()函数应该改成GetDlgCtrlID()吧.
------解决方案--------------------
响应的是这个消息ON_WM_CTLCOLOR();
HBRUSH CLoginDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

// TODO: Change any attributes of the DC here

if(nCtlColor == CTLCOLOR_EDIT)
{
pDC->SetBkColor(RGB(223,238,255));
hbr = m_brush; //m_brush是背景画刷,定义成颜色RGB(223,238,255)
}
// TODO: Return a different brush if the default is not desired
return hbr;
}
------解决方案--------------------
你的OnPaint是对话框的Onpaint他所绘制的区域只限与对话框,你设置的颜色被EDIT控件挡住了,如果要设置EDIT的颜色可以采用楼上的办法,也可以通过自己继承CEdit自己写类的办法,不过拦截OnCtlColor消息是最简单的。你可以通过一下代码测试被遮住的情况,希望有所启发:
CWnd *pWnd;
pWnd=GetDlgItem(IDC_EDIT1);
CDC *pDC=pWnd->GetDC();
CRect rect(0,0,100,100);
// pWnd->GetClientRect(&rect);

pDC->FillSolidRect(&rect,RGB(255,255,0));