请问在VC中如何改变编辑框的背景颜色

解决方案 »

  1.   

    继承CEdit,在继承类OnPaint用画刷改变
      

  2.   

    OnCtlColor中根据它的ID返回你想要的颜色
      

  3.   

    首先要创建一个画刷,在onCtlColor()函数中要调用SetBkColor()
      

  4.   

    响应WM_CTL
    HBRUSH CthreeDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); if (pWnd->GetDlgCtrlID()==IDC_EDIT1)
    { pDC->SetBkColor(RGB(0,255,0));
    }
    return hbr;
    }
      

  5.   

    你好,你的方法是我正在用的,不过会出现一个问题,就是Edit Control里的文字好像默认是顶端对齐的,这样做后只能将编辑框里的文本所在的行的背景改变,但是编辑框的下半段的背景颜色没有改变。不知道你注意到这个问题没?该如何解决呢?我在想如果使文本垂直居中行不行,但好像会出现上下两端都没有改变背景色。
      

  6.   

    OnCtlColor中处理,父窗口会反射到编辑框让它自己的处理,不过OnCtlColor要注意返回值,具体事项可以看看MSDN
      

  7.   

    HBRUSH CEditColorDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
    {
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor); // TODO:  在此更改 DC 的任何属性 // TODO:  如果默认的不是所需画笔,则返回另一个画笔
    if (pWnd->GetDlgCtrlID()==IDC_EDIT1)
    {
    pDC->SetTextColor(RGB(255,0,0));
    pDC->SetBkMode(TRANSPARENT);
    hbr = m_brush;
    }
    return hbr;
    }照着MSDN上的列子做了,能看到编辑框的背景色变成了黑色,字体变为了红色。但是有3个问题出现了
    1。字体颜色可通过调节RGB的值改变,那么背景色怎么由黑色改为其它颜色呢?
    2。当编辑框的高度比字体的高度大一点的时候,运行后,点击编辑框会出现顶端有一段白色,输入完成后背景色才变为黑色。
    3。输入文本完成后,点击对话框的空白处,光标跳不出来,还留在编辑框内。
      

  8.   

    最好自己写一个CEdit类,在OnPaint中改变颜色。