本文一两个Edit控件为例 第一步: 在主窗口函数开始处定义变量 CBrush m_brush;和一个全局变量int ColorNUM[2]; 第二步: 为窗口类添加OnCtrlColor()函数;添加方法是右键窗口类添,选择Add windows Message Handler......,添加里面的WM_CTLCOLOR; 并对OnCtrlColor()函数进行一下修改: HBRUSH CR58u5555555Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor,int *a) { HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); a=ColorNUM; if(nCtlColor==CTLCOLOR_EDIT) {switch(pWnd->GetDlgCtrlID()) { case IDC_EDIT1: pDC->SetTextColor(RGB(0,0,255)); if(a[0]==1) pDC->SetBkColor(RGB(0,255,0)); else pDC->SetBkColor(RGB(255,0,0)); //pDC->SetBkMode(TRANSPARENT); hbr=(HBRUSH)m_brush; return hbr; break; case IDC_EDIT2: pDC->SetTextColor(RGB(0,0,255)); if(a[1]==1) pDC->SetBkColor(RGB(0,255,0)); else pDC->SetBkColor(RGB(255,0,0)); //pDC->SetBkMode(TRANSPARENT); hbr=(HBRUSH)m_brush; return hbr; break; default: break; }} return hbr; } 注意int *a是自己加的,而且还要在窗口头文件中函数声明里自己添加int *a这个参数。 想要改变背景色,只需给ColorNUM[2]对应项赋需要的值即可。
|
|