当我在CEdit控件中选择“只读”属性后,CEdit的背景色为灰色,我想修改
背景色为其他颜色,同时能显示多行文本,应该如何做呢?CEdit* pEdit = static_cast<CEdit*>(GetDlgItem(IDC_FUNCINTRO));
pEdit->SetWindowText(mystring);

解决方案 »

  1.   

    供你参考:http://www.vckbase.com/document/viewdoc.asp?id=360
      

  2.   

    重载对话框的WM_CTLCOLOR
    if(nCtlColor==CTLCOLOR_EDIT)
    return CreateSoildBrush(RGB(255,255,255));
      

  3.   

    完全同意楼上这位仁兄。如果要显示多行文本,勾上“Multiline"属性就行了。 或者在动态创建的Create函数中加上ES_MULTILINE,就可以了。
      

  4.   

    请问楼上的两位兄弟CreateSoildBrush的详细用法,怎么CreateSoildBrush编译通不过,
    在MSDN上也查不到它的具体用法。。
    先谢了。。别笑我菜。。^-^
      

  5.   

    if(nCtlColor==CTLCOLOR_EDIT)return HBRUSH(GetStockObject(HOLLOW_BRUSH));
      

  6.   

    if(nCtlColor==CTLCOLOR_EDIT)
        pDC->SetBkMode(RGB(255,0,0)); return HBRUSH(GetStockObject(HOLLOW_BRUSH));
      

  7.   

    请问楼上的兄弟,加上你代码怎么背景变成乱码了。
    下面是我的代码。HBRUSH CCadBenchView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
    // TODO: Change any attributes of the DC here
    if(nCtlColor==CTLCOLOR_EDIT)
        pDC->SetBkMode(RGB(255,255,255)); 
    return HBRUSH(GetStockObject(HOLLOW_BRUSH));// TODO: Return a different brush if the default is not desired/
    return hbr;
    }
      

  8.   

    修改成这样的话颜色也是不对。。HBRUSH CCadBenchView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
    // TODO: Change any attributes of the DC here
    if(nCtlColor==CTLCOLOR_EDIT)
    {
        pDC->SetBkMode(RGB(255,255,255)); 
    return HBRUSH(GetStockObject(HOLLOW_BRUSH));
    }
    // TODO: Return a different brush if the default is not desired/
    return hbr;
    }
      

  9.   

    当编辑控件为只读,OnCtlColor()调用时,参数nCtlColor须设置为CTLCOLOR_STATIC 而不是CTLCOLOR_EDIT
      

  10.   

    楼上的兄弟,这样做只改变了文本选中时的背景色,而不是改变整个CEdit窗口的背景色,
    我是想改变CEdit窗口的背景色。谢了。。