如标题

解决方案 »

  1.   

    看MSDN啦。CEDIT为只读或DIsabled的时候,OnCtrlColor的nCtlColor(记不清楚了)和STATIC是一样的。查一下OnCtrlColor的解释就OK了。
      

  2.   

    处理WM_CTLCOLOR消息:
    COLORREF m_clrText;   //记录文本颜色
    COLORREF m_clrBkgnd; //记录背景颜色
    CBrush m_brBkgnd;  //用于绘制背景的刷子m_clrText = RGB( 0, 0, 0 );
    m_clrBkgnd = RGB(255, 255, 255);
    m_brBkgnd.CreateSolidBrush(m_clrBkgnd);HBRUSH CPlayWaveDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    int nId;

    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

    switch (nCtlColor)
    {
    case CTLCOLOR_EDIT:
    case CTLCOLOR_STATIC: //CEdit为只读时相当于STATIC
    nId = pWnd->GetDlgCtrlID();
    if (nId == IDC_FILE)
    {
    pDC->SetTextColor(m_clrText);
    pDC->SetBkColor(m_clrBkgnd);
    hbr = m_brBkgnd;
    }
    break;

    default:
    break;
    }

    // TODO: Return a different brush if the default is not desired
    return hbr;
    }