如题

解决方案 »

  1.   

    http://www.vckbase.com/code/listcode.asp?mclsid=3&sclsid=301
      

  2.   

    把按钮的Owner draw属性钩上,再响应WM_CTLCOLOR消息
    如:HBRUSH CYourDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {   
    if(nCtlColor==CTLCOLOR_BTN){
    pDC->SetBkColor(RGB(98,0,0));
    return ::CreateSolidBrush(RGB(98,0,0));
    }
    if(nCtlColor==CTLCOLOR_DLG){

    pDC->SetBkColor(RGB(0,98,98));
    return ::CreateSolidBrush(RGB(0,98,98));
    }
    HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
    return hbr;
    }
    这是最简单的一种方法,另外方法就是自已去从CButton派生
      

  3.   

    自已从CButton派生扩展类!
    然后重载DrawItem函数,
    在其中添加语句         pDC = CDC::FromHandle(lpDrawItemStruct->hDC);
             pDC->SetBkMode(TRANSPARENT);
    CBrush brush;
    brush.CreateSolidBrush(你的颜色);
    pDC->FillRect(lpDrawItemStruct->rcItem, &brush);
      

  4.   

    有一个CButtonST的类
    到网上搜索一下.
      

  5.   

    wm_oncolor消息对不button不管用的,应重载CButton类
      

  6.   

    在网络上下一个CButton的派生类,只要你在界面上的按钮定义变量为这个类,颜色等状态就会改变的。
      

  7.   

    继承CButton,然后在继承类的onerasebkgnd或onpaint事件中使用CDC重绘背景。