Jak změnit barvu pozadí ovládacího prvku karta

Překlady článku Překlady článku
ID článku: 179909 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek ukazuje, jak lze změnit barvu pozadí každé karty v ovládací prvek karta. To předpokládá, že máte pole a vybrali jste dialogové okno a velikost ovládacího prvku karta do dialogového okna editoru zdrojů.

Další informace

Změna barvy pozadí každé karty, je nutné provést ovládacího prvku karta vlastník kreslit a metoda FillRect() slouží k vyplnění oblasti obdélník Karta sama štětcem vytvořit a volat metodu SetBkColor() Před voláním metody TextOut() s textem, který chcete na kartě Zobrazit.

Nejprve vyvolat vlastností ovládacího prvku karta v editoru zdrojů a styly kartu Vybrat "vlastník Remíza dlouhodobého" zaškrtněte políčko Uložit svou práci. Pokud vytváříte dynamicky ovládacího prvku karta během Ujistěte se, dialogové okno Inicializace s CreateWindow() nebo CreateWindowEx() zahrnout TCS_OWNERDRAWFIXED bit v parametru dwStyle.

Definuje následující # se používají ve vzorku:
        #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)
				

Používáte-li sadu SDK

Stopy v tomto výpise vzorku byly vytvořeny v WM_INITDIALOG a jsou statické úchyty.

Dialogovém postupu přidáte zprávu WM_DRAWITEM.

Ukázkový kód

   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;
				

Pokud jste pomocí MFC

Stopy uvedené jsou součástí třída dialog a kdy byly vytvořeny byla volána metoda konstruktoru dialogové okno.

Přepište metodu OnDrawItem() pro použití třídy CDialog odvozené třídy Průvodce a přidejte následující kód, změna názvů proměnných jako potřebných. Je důležité si uvědomit, že ukazatel na objekt CDC z popisovač řadič domény předán prostřednictvím LPDRAWITEMSTRUCT je to požadováno, jinak pouze pozadí textu bude požadovanou barvu.

Ukázkový kód

       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));
          }
       }
				

Vlastnosti

ID článku: 179909 - Poslední aktualizace: 23. dubna 2011 - Revize: 3.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
Klíčová slova: 
kbctrl kbhowto kbtabctrl kbmt KB179909 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:179909

Dejte nám zpětnou vazbu

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com