Você está offline; aguardando reconexão

Como alterar a cor de fundo de um controle guia

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 179909
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Sumário
Este artigo demonstra como alterar a cor de plano de fundo de cada guia em um controle guia. Ele pressupõe que você tem uma caixa de diálogo e ter selecionado e tamanho de um controle de guia na caixa de diálogo usando o Editor de recursos.
Mais Informações
Para alterar a cor de plano de fundo da cada guia que você deve fazer na guia proprietário controle desenhar e use o método FillRect() para preencher a área de retângulo da guia com um pincel que você crie e chama o método SetBkColor() antes de você fazer uma chamada para o método TextOut() com o texto que você deseja que apareça na guia.

Primeiro exibir as propriedades para o controle de guia no Editor de recursos e marque a caixa de seleção Selecionar o "proprietário desenhe fixo" do estilos guia e salve seu trabalho. Se você estiver criando dinamicamente o controle TAB durante a inicialização da caixa de diálogo com CreateWindow() ou CreateWindowEx() certifique-se de incluir TCS_OWNERDRAWFIXED bit no parâmetro dwStyle.

# A seguir define são usados no exemplo:
        #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)				

Se estiver usando o SDK

Os pincéis neste trecho de exemplo foram criados no WM_INITDIALOG e são identificadores estáticos.

Adicione a mensagem WM_DRAWITEM ao procedimento da caixa de diálogo.

Código de exemplo

   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;				

Se o estão usando o MFC

Os pincéis chamados fazem parte da classe diálogo e foram criados quando o construtor de diálogo foi chamado.

Substitua o método OnDrawItem() para sua classe derivada CDialog usando Assistente de classe e adicione o seguinte código, alterando os nomes de variáveis como necessários. É importante observar que é necessário um ponteiro para um objeto CDC de identificador do DC passado via o LPDRAWITEMSTRUCT, caso contrário, o plano de fundo do texto será na cor desejada.

Código de exemplo

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

Propriedades

ID do Artigo: 179909 - Última Revisão: 12/05/2015 08:20:01 - Revisão: 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 KbMtpt
Comentários