So ändern Sie die Hintergrundfarbe von einem Registerkarten-Steuerelement

Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.

Den englischen Originalartikel können Sie über folgenden Link abrufen: 179909
Dieser Artikel wurde archiviert. Er wird im vorliegenden Zustand bereitgestellt und nicht mehr aktualisiert.
Zusammenfassung
Dieser Artikel veranschaulicht die Hintergrundfarbe der einzelnen Registerkarten in einem Registersteuerelement zu ändern. Wird davon es ausgegangen, dass Sie ein Dialogfeld haben und haben aktiviert und Größe eines Registerkarten-Steuerelement in das Dialogfeld mit dem Ressourcen-Editor.
Weitere Informationen
Ändern Sie stellen die Hintergrundfarbe der einzelnen Registerkarten, müssen Sie die Registerkarte Steuerelement Besitzer und füllen den Rechteckbereich der Registerkarte mit einem Pinsel, erstellen und rufen Sie die SetBkColor()-Methode auf, bevor Sie mit die FillRect()-Methode, einen Aufruf der TextOut()-Methode mit dem Text auf der Registerkarte angezeigt werden soll.

Zuerst schalten Sie die Eigenschaften für das Registersteuerelement im Ressourcen-Editor und aktivieren Sie der Formatvorlagen Registerkarte auswählen "Zeichnen die Besitzer feste" das Kontrollkästchen und speichern Sie Ihre Arbeit. Wenn Sie das Registersteuerelement dynamisch während der Initialisierung des Dialogfelds mit CreateWindow() oder CreateWindowEx() erstellen müssen Sie unbedingt die TCS_OWNERDRAWFIXED bit in dem DwStyle-Parameter enthalten.

Definiert die folgenden # im Beispiel verwendeten:
        #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)				

Das SDK verwenden

Pinsel in diesem Beispielauszug in WM_INITDIALOG erstellt wurden und statische Handles sind.

Fügen Sie das Dialogfeld Prozedur WM_DRAWITEM Nachricht hinzu.

Beispielcode

   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;				

Wenn der sind MFC

Der Pinsel bezeichnet sind Teil der Dialogfeldklasse und wurden erstellt, wenn der Dialogfeldkonstruktor aufgerufen wurde.

Überschreiben Sie die OnDrawItem()-Methode für die CDialog abgeleiteten Klasse, die mit Klassen-Assistenten, und fügen Sie den folgenden Code hinzu, ändern Variablennamen als notwendig. Es ist wichtig, ein Zeiger auf eine CDC-Objekt aus dem Handle des DOMÄNENCONTROLLERS über die LPDRAWITEMSTRUCT übergeben erforderlich ist, andernfalls werden nur der Hintergrund der Text die gewünschte Farbe.

Beispielcode

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

Warnung: Dieser Artikel wurde automatisch übersetzt.

Eigenschaften

Artikelnummer: 179909 – Letzte Überarbeitung: 12/05/2015 08:19:59 – Revision: 1.3

Microsoft Platform Software Development Kit January 2000 Edition, Microsoft Visual Studio 97 Service Pack 3, Microsoft Visual C++ 5.0 Professional Edition, Microsoft Visual C++ 6.0 Professional Edition, Microsoft Visual Basic 5.0 Enterprise Edition, Microsoft Visual Basic Enterprise Edition for Windows 6.0

  • kbnosurvey kbarchive kbmt kbctrl kbhowto kbtabctrl KB179909 KbMtde
Feedback