TAB标签鼠标移上去的不同状态,当前页标签,要贴带圆角的图,谁有相关的自绘类,适合的送高分tab重画

解决方案 »

  1.   

    自己重写CTabCtrl类,添加处理虚函数DrawItem
      

  2.   

    自绘CTabCtrl控件的实现 .
      

  3.   


    谢谢推荐,可以学习下CTabCtrl控件的自绘。
    各位高人,还有没有,继续啊
      

  4.   

    dc.RoundRect(&itemRc,CPoint(10,10));
      

  5.   

    void CMyTab::OnPaint() 
    {
    if(m_bHeadStyle)
    {
    CPaintDC dc(this); // device context for painting
    //
    char szTabText[40];
    memset(szTabText, '\0', sizeof(szTabText));
    // light blue
    CRect rc;
    GetClientRect(rc);
    rc.bottom=22;
    dc.FillSolidRect(&rc, RGB(101,174,209));

    TC_ITEM tci;
    memset(&tci,0,sizeof(tci));
    tci.mask        = TCIF_TEXT | TCIF_STATE;
    tci.dwStateMask = TCIS_BUTTONPRESSED;
    tci.pszText     = szTabText;
    tci.cchTextMax  = sizeof(szTabText)-1;
    // get item
    CRect rcItem;
    for(int jj=0;jj<6;jj++)
    {
    GetItem(jj, &tci);
    GetItemRect(jj,&rcItem);
    dc.SetBkMode(TRANSPARENT);
    if(tci.dwState & TCIS_BUTTONPRESSED) dc.SetTextColor(RGB(255,0,0));
    else  dc.SetTextColor(RGB(0,0,0));
    //
    dc.RoundRect(&rcItem,CPoint(10,10));
    // Draw text
    rcItem.OffsetRect(8,1);
    dc.TextOut(rcItem.left,rcItem.top, tci.pszText, lstrlen(tci.pszText));
    }
    }
    else
    {
    CTabCtrl::OnPaint();// call drawitem
    }
    }
      

  6.   

    个人推荐继承CWnd或者CStatic重写,我一般都是这么做的。