탭 컨트롤의 배경색을 변경하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 179909 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 탭 컨트롤의 각 탭에 배경색을 변경하는 방법을 보여 줍니다. 이를 사용하면 대화 상자 있어야 및 있어야 선택한 리소스 편집기를 사용하여 해당 대화 상자 탭 컨트롤 크기가 가정합니다.

추가 정보

변경하려면 탭에 표시할 텍스트로 TextOut() 메서드 호출을 탭 컨트롤의 소유자 그리기 및 FillRect() 메서드를 만들기 및 전에 SetBkColor() 메서드를 호출하여 브러시 사용하여 탭의 자체를 사각형 영역을 채울 수 있게 합니다 각 탭의 배경 색을 확인합니다.

먼저 리소스 편집기의 탭 컨트롤에 대한 속성을 표시합니다 및 스타일 탭을 클릭하고 선택, "소유자 고정 그릴" 확인란을 선택하고 작업 내용을 저장하십시오. CreateWindow() 또는 CreateWindowEx() 대화 상자 초기화하는 동안 Tab 컨트롤을 동적으로 만드는 중인 경우 dwStyle 매개 변수 비트 TCS_OWNERDRAWFIXED 포함하도록 확인해야 합니다.

다음 # 정의하는 샘플에서 사용되는:
        #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 사용

참조되는 브러시 대화 상자 클래스에 포함되는 및 대화 생성자가 호출될 때 만들어진.

클래스 마법사를 사용하여 CDialog 파생 클래스에 대한 OnDrawItem() 메서드를 재정의하고 필요한 대로 변수 이름을 변경하면 다음 코드를 추가하십시오. 참고 CDC 개체에 대한 포인터를 통해 LPDRAWITEMSTRUCT 전달된 DC의 핸들에서 필요한 경우, 텍스트의 배경을 원하는 색이 됩니다 그렇지 않으면 합니다.

예제 코드

       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 - 마지막 검토: 2005년 7월 11일 월요일 - 수정: 1.3
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Platform Software Development Kit-January 2000 Edition
  • Microsoft Visual Studio 97 서비스 팩 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
키워드:?
kbmt kbctrl kbhowto kbtabctrl KB179909 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

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