Как изменить цвет фона элемента управления вкладка

ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.

Эта статья на английском языке:179909
Эта статья помещена в архив. Она предлагается "как есть" и обновляться не будет.
Аннотация
В этой статье показано, как изменить цвет фона вкладок окнаэлемент управления Tab. Предполагается, что имеется диалоговое окно и для выбора иразмер вкладок в диалоговом окне, с помощью редактора ресурсов.
Дополнительная информация
Чтобы изменить цвет фона каждой вкладки необходимо сделать вкладокВладелец рисования и заполнения области прямоугольника с помощью метода FillRect()Вкладка себя с помощью кисти, создать и вызвать метод SetBkColor()Перед тем как сделать вызов метода TextOut() с текстом, который вы хотитеотображаются на вкладке.

Сначала откройте окно свойств элемента управления tab в редакторе ресурсовфлажок стили tab. Выберите «рисование владельцем фиксированный» и сохранитерезультаты работы. При создании динамического элемента управления Tab во времяУбедитесь, что Инициализация диалогового окна с CreateWindow() или CreateWindowEx()Чтобы включить TCS_OWNERDRAWFIXED бит в параметре dwStyle.

Ниже # определяет используемые в этом примере:
        #define RED     RGB(255,0,0)        #define YELLOW  RGB(255,255,0)        #define MAGENTA RGB(255,0,255)        #define WHITE   RGB(255,255,255)        #define BLUE    RGB(0,0,255)				

При использовании пакета SDK

Кисти в данном фрагменте примера были созданы в WM_INITDIALOG и являютсястатические маркеры.

Добавьте сообщение WM_DRAWITEM процедуры из диалогового окна.

Пример кода

   case WM_DRAWITEM:      lpdis = (LPDRAWITEMSTRUCT) lParam; // item drawing information      hTabCtrl = GetDlgItem(hDlg, IDC_TAB1);      if (hTabCtrl == lpdis->hwndItem)   // is this the tab control?      {         // which tab? first, second...fifth         switch (lpdis->itemID)         {         case 0:            hbr = hbrRed;            bkColor = RED;            break;         case 1:            hbr = hbrYellow;            bkColor = YELLOW;            break;         case 2:            hbr = hbrMagenta;            bkColor = MAGENTA;            break;         case 3:            hbr = hbrWhite;            bkColor = WHITE;            break;         case 4:            hbr = hbrBlue;            bkColor = BLUE;            break;         }         memset(szTabText, '\0', sizeof(szTabText));         tci.mask = TCIF_TEXT;         tci.pszText = szTabText;         tci.cchTextMax = sizeof(szTabText)-1;         TabCtrl_GetItem(hTabCtrl, lpdis->itemID, &tci);         FillRect(lpdis->hDC, &lpdis->rcItem, hbr);         SetBkColor(lpdis->hDC, bkColor);         TextOut(lpdis->hDC,               lpdis->rcItem.left,               lpdis->rcItem.top,               tci.pszText,               lstrlen(tci.pszText));      }      break;				

Если вы с помощью MFC

Кисти, называемые являются частью класса диалогового окна и были созданы прибыл вызван конструктор диалогового окна.

Переопределите метод OnDrawItem() для класса CDialog производного класса с помощьюМастера и добавьте следующий код, изменив имена переменных как необходимые.Важно отметить, что указатель на объект CDC из дескриптораконтроллер Домена, переданный через LPDRAWITEMSTRUCT является обязательным, в противном случае толькоФон текста будет нужный цвет.

Пример кода

       void CMFCTabCtrlDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpdis)       {          CDialog::OnDrawItem(nIDCtl, lpdis);          char        szTabText[100];          RECT        rect;          UINT        bkColor;          CBrush      *cbr;          TC_ITEM     tci;          CTabCtrl    *pTabCtrl = (CTabCtrl *)GetDlgItem(IDC_TAB1);          if (pTabCtrl->m_hWnd == lpdis->hwndItem)          {              // which tab?              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,                      tci.pszText,                      lstrlen(tci.pszText));          }       }				

Внимание! Эта статья переведена автоматически

Свойства

Номер статьи: 179909 — последний просмотр: 12/05/2015 08:20:01 — редакция: 4.0

Microsoft Visual C++ 5.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition

  • kbnosurvey kbarchive kbctrl kbhowto kbtabctrl kbmt KB179909 KbMtru
Отзывы и предложения