我的复选框是动态创建在一个工具栏中的。
m_chkAbnormal.Create( _T("阳性"), BS_AUTOCHECKBOX | WS_VISIBLE | WS_CHILD, rctSize, &m_wndToolBarText, CHK_ABNORMAL );我尝试过子类化CButton成CButtonEx,并重载ON_WM_ERASEBKGND和ON_WM_CTLCOLOR.但是都看不到效果。所以换了种方法,目前也正在尝试重绘CButtonEx,并在重绘中应用了背景色,但是重绘的背景色是有了,但是其他的东西都没了(除了背景色,左边的方框和文字都没了)。
现在不知道怎么继续下去了。我可以继续重绘普通CheckBox那个方框吗?它会起到CheckBox原有的那个效果吗?或者,各位大侠还有什么更好的方法,希望能解惑。万分感谢!

解决方案 »

  1.   

    目前已经重载了DrawItem。 并且已经在里面成功的自绘了背景色,但是处理背景色,其他什么东西都没有了。
    而CheckBox不同与普通的Button。 它的里面是有一个方框和文字的。这个方框,我不知道怎么处理了。
    因为如果只是绘的话,它应该就没有的原来CheckBox的方框的那些功能了。
      

  2.   

    你想改的是控件的背景还是那个打勾的方格中的颜色?如果是控件的背景,只要在对话框类中响应WM_CTLCOLOR消息,判断是该控件时返回一个HRRUSH就可以了(例如:return ::CreateSolidBrush(RGB(255,0,0)))。
      

  3.   

    http://www.codeguru.com/cpp/controls/controls/checkboxcontrols/article.php/c5319/
      

  4.   

    谢谢各位大侠的帮助,虽然最后还是有些问题,但是已经看到希望了。目前采用了laiyiling提供的网站中的方法,完全的重绘。谢谢.