颜色会随着条件改变

解决方案 »

  1.   

    http://www.codeproject.com/staticctrl/clabel.asp
      

  2.   

    http://www.vchelp.net/vchelp/archive.asp?type_id=4&class_id=1&cata_id=1&article_id=633
      

  3.   

    派生一个这个控件的类,重写OnSize(...),OnGetMinMaxInfo(...)和
    OnMouseMove()函数
      

  4.   

    overide OnCtlColor function:
    HBRUSH CFilterDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    HBRUSH brush; switch(nCtlColor)
    {
    case CTLCOLOR_STATIC:
    {
    pDC->SetBkMode(TRANSPARENT);
    brush=(HBRUSH)::GetStockObject(WHITE_BRUSH);
    break;
    }         default: brush=CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    }
    return brush;
    }
      

  5.   

    哦,对不起发错地方了!
    你这个问题可以在WM_CTLCOLOR中加入:
      
       if(nCtlColor == CTLCOLOR_STATIC)
       {
         pDC->SetBkColor(RGB(YOURCOLOR));
         ...
       }
      

  6.   

    响应其父窗口的WM_CTRLCOLOREDIT消息,返回一个该颜色的刷子(sdk方法)
    或重载与WM_CTRLCOLOR相关的消息函数(名字我忘记了),判断句柄参数为该edit的情况,同样返回一个刷子即可,当然,你也可以返回一个null_brush,这样就可以让edit透明了(但要自己处理背景重画问题),另外记得要setbkmode(transparent),让edit里的字背景为透明