Nasıl yapılır: bir sekme denetimi, arka plan rengini değiştirme

ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.

Makalenin İngilizcesi aşağıdaki gibidir:179909
Bu makale arşivlenmiştir. "Olduğu gibi" sunulmaktadır ve bundan sonra güncelleştirilmeyecektir.
Özet
Bu makalede, her sekme, sekme denetimindeki arka plan rengini değiştirmek gösterilmiştir. Bu, bir iletişim kutusu ve seçili ve Kaynak Düzenleyicisi'ni kullanarak iletişim bir sekme denetimi boyutta varsayar.
Daha fazla bilgi
Her sekme, sekme denetim sahibi çizmek ve FillRect() yöntemi oluşturmak ve SetBkColor() yöntemini önce bir fırça ile sekmesinin kendisini Dikdörtgen alanı doldurmak için yapmanız gereken arka plan rengini değiştirmek için sekmesinde görünmesini istediğiniz metni TextOut() yöntem çağrısı yapın.

Ilk kaynak Düzenleyicisi'nde sekme denetiminin özelliklerini getirmek ve stiller sekmesini Select "Owner çizmek sabit" onay kutusunu seçin ve çalışmanızı kaydedin. Sekme denetiminin CreateWindow() veya CreateWindowEx() iletişim kutusunun başlatma sırasında dinamik olarak oluşturuyorsanız dwStyle parametresinde bit TCS_OWNERDRAWFIXED eklemek emin olun.

Aşağıdaki # tanımlar örnekte kullanılan:
        #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 kullanıyorsanız

Fırçaları bu alıntı içinde WM_INITDIALOG içinde oluşturulan ve statik tanıtıcıları olur.

Iletinin WM_DRAWITEM iletişim kutusunun yordama ekleyin.

Örnek kod

   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;				

Bilgisayarınızı yüklenmişken MFC kullanma

Başvurulan fırçaları <a0>iletişim</a0> sınıfının bir parçasıdır ve iletişim kurucu çağrıldığında oluşturulmuş.

Sınıf Sihirbazı'nı kullanarak kendi CDialog türetilmiş sınıf OnDrawItem() yöntemini geçersiz kılın ve değişken adları gerekli değiştirilmesi aşağıdaki kodu ekleyin. Işleyicinin LPDRAWITEMSTRUCT geçirilen etki alanı DENETLEYICISI, gelen HDM nesneye bir işaretçi gereklidir, aksi durumda, istediğiniz rengi yalnızca metnin arka planı olur dikkate almak önemlidir.

Örnek kod

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

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 179909 - Son İnceleme: 12/05/2015 08:20:01 - Düzeltme: 1.3

Microsoft Platform Software Development Kit - Ocak 2000 Sürümü, 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 KbMttr
Geri bildirim