mfc控件之Tab control

来源:互联网 发布:云盘 mac 编辑:程序博客网 时间:2024/05/22 14:22

一、设置标签Item的高度

m_tab.SetItemSize(CSize(10,40));  //10表示宽度,40表示高度;

二、设置标签Item的颜色

1、设置tab控件styles为ower draw fixed;

2、在摆放tab控件的对话框等的头文件类定义中增加画刷:

      CBrush m_brRed;

3、在对话框.cpp文件头处定义颜色:

#define RED     RGB(255,0,0)

4、在类函数处增加画刷创建:

m_brRed.CreateSolidBrush(RGB(255,0,0));

5、Add windows message handler--->WM_DRAWITEM

实现如下:

void CMFCTabCtrlDlgDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpdis)      
{  
         char        szTabText[100];
          RECT        rect;
          UINT        bkColor;
          CBrush      *cbr;
          TC_ITEM     tci;

          CTabCtrl    *pTabCtrl = (CTabCtrl *)GetDlgItem(IDC_TAB1);//关联tab控件

          if (pTabCtrl->m_hWnd == lpdis->hwndItem)
          {
              // 5个选项不能少
              switch (lpdis->itemID)
              {
              case 0:
                  cbr = &m_brRed;
                  bkColor = RED;
                  break;

              case 1:
                  cbr = &m_brYellow;
                  bkColor = YELLOW;
                  break;

              case 2:
                  cbr = &m_brMagenta;
                  bkColor = MAGENTA;
                  break;

              case 3:
                  cbr = &m_brWhite;
                  bkColor = WHITE;
                  break;

              case 4:
                  cbr = &m_brBlue;
                  bkColor = BLUE;
                  break;
              }
             memset(szTabText, '\0', sizeof(szTabText));

              tci.mask        = TCIF_TEXT;
             tci.pszText     = szTabText;
             tci.cchTextMax  = sizeof(szTabText)-1;
              pTabCtrl->GetItem(lpdis->itemID, &tci);
              CDC *dc = CDC::FromHandle(lpdis->hDC);
              dc->FillRect(&lpdis->rcItem, cbr);
              dc->SetBkColor(bkColor);
              TextOut(lpdis->hDC,
                      lpdis->rcItem.left,
                      lpdis->rcItem.top+3,
                      tci.pszText,
                      lstrlen(tci.pszText));
          }
//  CDialog::OnDrawItem(nIDCtl, lpdis);
}

7、在初始化函数中insertitem,不然会出错。

如下图所示:


原创粉丝点击