我映射了一个WM_CTLCOLOR消息,但是在消息处理函数中设置了一个断点却发现断点没有作用(也就是消息根本没有被发送),大家帮帮忙。

解决方案 »

  1.   

    WM_CTLCOLOR不能修改button颜色
    http://dev.csdn.net/develop/article/8/8432.shtm
    http://www.codeguru.com/Cpp/controls/buttonctrl/article.php/c5169/
      

  2.   

    风格设置 OwnDraw 记不太清,就是自画吧
      

  3.   

    试试WM_CTLCOLORBTN,另外加上OWNERDRAW属性。
    不过最好是到网上找个例子,看看别人怎么做的。有很多不错的自定义Button类,例如CButtonST
      

  4.   

    建立按钮时要设置BS_OWNERDRAW属性标志
    然后添加WM_DRAWITEM消息响应 
    下面是消息响应函数, CClassXXX从CDialog派生:void CClassXXX::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) 
    {
    // TODO: Add your message handler code here and/or call default
    if(nIDCtl!=IDC_BUTTON4)  // IDC_BUTTON4 是你要重画的按钮标识
    {
    CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
    return;
    } CPen pen(PS_SOLID, 1, RGB(234,30,150));
    CBrush brush(RGB(134,130,210));
    HPEN hOldPen =(HPEN)::SelectObject(lpDrawItemStruct->hDC, (HPEN)pen);
    HBRUSH hOldbrush = (HBRUSH)::SelectObject(lpDrawItemStruct->hDC, (HBRUSH)brush); ::Rectangle(
      lpDrawItemStruct->hDC, 
      lpDrawItemStruct->rcItem.left, 
      lpDrawItemStruct->rcItem.top,
      lpDrawItemStruct->rcItem.right,
      lpDrawItemStruct->rcItem.bottom
      ); ::SelectObject(lpDrawItemStruct->hDC, hOldbrush);
    ::SelectObject(lpDrawItemStruct->hDC, hOldPen);
    }查看DRAWITEMSTRUCT 结构说明根据不同的按钮状态画出不同的颜色: 
    判断该结构的itemAction
      

  5.   

    thank you. 好久没用了。