一个EDIT在设置为只读时“(hWnd, EM_SETREADONLY, (WPARAM)TRUE, (LPARAM)NULL);”,其背景色变为灰色,有没有办法让其仍旧为白色,希望有代码说明?

解决方案 »

  1.   

    重载OnCtlColor(...
    在里面加上大概如下样子的代码static   HBRUSH   hbrEdit = ::CreateSolidBrush(RGB(255,255,255));   
    if(nCtlColor == CTLCOLOR_STATIC)
    {    
    if(pWnd->GetDlgCtrlID() == IDC_EDT_xxxx)   
    {   
    pDC->SetBkColor(RGB(255,255,255));   
    return hbrEdit;
    }
      

  2.   

    父窗口响应WM_CTLCOLOREDIT消息:
    case WM_CTLCOLOREDIT:
       return (LONG)GetStockObject(WHITE_BRUSH);
      

  3.   

    其实可以用一个婉转的方式来实现你需要的功能
    建立两个控件
    一个static更换背景白色显示你的文字
    当可读的时候用edit代替把static隐藏
      

  4.   


    不好意思弄错了,只读的EDIT是WM_CTLCOLORSTATIC消息,你改成这个消息就可以了。