Bagaimana mengubah warna latar belakang Tab Control

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 179909 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini menunjukkan cara mengubah warna latar belakang setiap tab dalam kontrol Tab. Ini mengasumsikan bahwa Anda memiliki sebuah dialog kotak dan telah dipilih dan ukuran kontrol Tab ke dalam dialog menggunakan Editor sumber daya.

INFORMASI LEBIH LANJUT

Untuk mengubah warna latar belakang setiap tab Anda harus membuat Tab control pemilik menggambar dan menggunakan metode FillRect() untuk mengisi wilayah persegi panjang Tab itu sendiri dengan kuas bahwa Anda membuat dan memanggil metode SetBkColor() sebelum Anda membuat panggilan ke metode TextOut() dengan teks yang ingin Anda muncul pada tab.

Pertama membawa properti untuk tab control di Editor sumber daya dan pilih gaya tab. Pilih "pemilik menarik tetap" kotak centang dan menyimpan pekerjaan Anda. Jika Anda secara dinamis membuat Tab control selama Pastikan kotak dialog inisialisasi dengan CreateWindow() atau CreateWindowEx() untuk menyertakan TCS_OWNERDRAWFIXED sedikit dalam dwStyle parameter.

# Berikut mendefinisikan digunakan dalam sampel:
        #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)
				

Jika Anda menggunakan SDK

Sikat dalam kutipan sampel ini diciptakan di WM_INITDIALOG dan yang menangani statis.

Tambahkan WM_DRAWITEM pesan ke kotak dialog prosedur.

Contoh kode

   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;
				

Jika Anda menggunakan MFC

Sikat yang disebut adalah bagian dari kelas dialog dan diciptakan ketika konstruktor dialog dipanggil.

Menimpa OnDrawItem() metode untuk kelas CDialog diturunkan Anda menggunakan kelas Wizard dan tambahkan kode berikut, mengubah nama variabel sebagai perlu. Penting untuk dicatat bahwa pointer ke objek CDC dari pegangan DC berlalu dalam melalui LPDRAWITEMSTRUCT diperlukan, jika tidak hanya latar belakang teks akan warna yang diinginkan.

Contoh kode

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

Properti

ID Artikel: 179909 - Kajian Terakhir: 16 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual Basic 5.0 Enterprise Edition
Kata kunci: 
kbctrl kbhowto kbtabctrl kbmt KB179909 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:179909

Berikan Masukan

 

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