Hmm.. I am doing the same... the following code paints a white background in IDC_USER and IDC_KEY which are read only (I didn't want them to be gray) and paints everything else with a blue background. They are Enabled though (i.e. EnableWindow(TRUE)). HBRUSH CCncloginDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); HWND hWnd=pWnd->GetSafeHwnd(); // TODO: Change any attributes of the DC here if(nCtlColor==CTLCOLOR_EDIT || hWnd==GetDlgItem(IDC_USER)->GetSafeHwnd() || hWnd==GetDlgItem(IDC_KEY)->GetSafeHwnd()) { pDC->SetBkColor(RGB(255,255,255)); hbr=(HBRUSH)m_brBrush; } else { pDC->SetBkColor(RGB(128,128,200)); hbr=(HBRUSH)m_brBrush2; } // TODO: Return a different brush if the default is not desired return hbr; } Sounds mysterious! If you work out what's up then post it. I would be interested to hear what it was. :) Adam. "I spent a lot of my money on booze, birds and fast cars. The rest I just squandered" George Best.