怎么把Edit的底色变成黑色,输入的文字是红色的?

解决方案 »

  1.   

    派生一个CEdit,重载ctlcolor在其中
    SetBkColor
      

  2.   

    CWnd::OnCtlColor
    This method is called by the framework when a child control is about to be drawn. Most controls send this message to their parent, usually a dialog box, to prepare the pDC for drawing the control using the correct colors.afx_msg HBRUSH OnCtlColor( 
    CDC* pDC, 
    CWnd* pWnd, 
    UINT nCtlColor ); 请仔细阅读MSDN中的内容,所有控件的绘制都会经过这个东西的。
      

  3.   

    C中如何改变对话框中控件的颜色
     
    2002-11-3 15:56:40   PCVC.NET   thrash_lwq   阅读次数: 22039 
        问题:在VC中,当我们大量的运用控件时,往往会为改变控件的颜色所烦恼。因为VC不象VB那样,可以方便地改变对话框及各个控件的颜色,要改变一个控件的颜色比较烦琐。那么,VC中怎样改变控件的颜色。     思路:在控件显示之前,每一个控件会向父对话框发送一个WM_CTLCOLOR消息,这个消息缺省处理函数CWnd::OnCtlColor返回一个HBRUSH类型的句柄,这样,就可以设置前景和背景文本颜色,并为控件或者对话框的非文本区域选定一个刷子。     实现:     ① 先创建一个基于对话框的工程,命名为test,然后在对话框上加入一个ListBox控件。     ② 在testDlg.h中加入一个成员变量:HBRUSH m_hbrush;     ③ 在OnInitDialog()中,加入m_hbrush=CreateSolidBrush(RGB(0,0,0);此处设置的RGB值可以改变ListBox的背景色。为了观看ListBox中字的颜色变化,我们给ListBox加入几个字:利用Class Wizard给ListBox加入一个Control类型的成员变量m_ctrlListBox,然后在OnInitDialog()加入如下所示的代码:         m_ctrlListBox.AddString("第一行");
            m_ctrlListBox.AddString("第二行");    ④ 点击Class Wizard,给testDlg加入WM_CTLCOLOR事件,单击Edit Code按钮,然后把改函数的内容替换为如下代码: if(nCtlColor== CTLCOLOR_LISTBOX)
    {
       pDC->SetBkMode(TRANSPARENT);
                    //此处设置字体的颜色
       pDC->SetTextColor(RGB(255,255,255));   return m_hbrush;
    }
    else
       return CDialog::OnCtlColor(pDC, pWnd, nCtlColor);    现在编译并运行改程序,可以看到列表框已经变成黑色而其中的字已经变为白色了! 
    参数:nCtlColor--对应某类控件,具体查阅帮
      

  4.   

    我要指定某个edit改变颜色,其他的不变怎么办,还有如上所说背景色虽然改变但如果把edit控件画得大一些,而背景色不足以充满整个edit又怎么办?
      

  5.   

    要指定某个edit的颜色怎么办,谁来答一下