How To Change the Background Color of a Tab Control
来源:互联网 发布:java项目没有web.xml 编辑:程序博客网 时间:2024/04/30 19:54
How To Change the Background Color of a Tab Control
适用于
This article was previously published under Q179909
SUMMARY
This article demonstrates how to change the background color of each tab in a Tab control. It assumes that you have a dialog box and have selected and sized a Tab control into the dialog using the Resource Editor.MORE INFORMATION
To change the background color of each tab you must make the Tab control owner draw and use the FillRect() method to fill the rectangle area of the tab itself with a brush that you create and call the SetBkColor() method before you make a call to the TextOut() method with the text you want to appear on the tab.First bring up the properties for the tab control in the Resource Editor and select the Styles tab. Select the "Owner draw fixed" check box and save your work. If you are dynamically creating the Tab control during the dialog box's initialization with CreateWindow() or CreateWindowEx() be sure to include the TCS_OWNERDRAWFIXED bit in the dwStyle parameter.
The following #defines are used in the sample:
#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)
If You Are Using the SDK
The brushes in this sample excerpt were created in WM_INITDIALOG and are static handles.Add the WM_DRAWITEM message to the dialog box's procedure.
Sample Code
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;
If Your Are Using MFC
The brushes referred to are part of the dialog class and were created when the dialog constructor was called.Override the OnDrawItem() method for your CDialog derived class using Class Wizard and add the following code, changing variable names as neccessary. It is important to note that a pointer to a CDC object from the handle of the DC passed in via the LPDRAWITEMSTRUCT is required, otherwise only the background of the text will be the desired color.
Sample Code
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)); } }
- How To Change the Background Color of a Tab Control
- how to change the background color of actionbar
- qt 之 How to Change the Background Color of QWidget
- 如何修改Screen背景?How to - Change the background color of a screen
- how to change the background of actionbar.tab
- Change the background color of the header of a List Control
- How to customize the background color of a UITableViewCell?
- How to change the color of a CEikLabel
- How to change the text color of the selected property sheet tab in Visual C++
- How to customize the background color of a UITableViewCell? 修改UITableViewCell背景色
- How to change the background color of form using C++ - 如何用C++改变窗体的颜色
- pyqt - How to change the color of a word from my textedit
- A script to change the background of pdf file!
- how to change text color of CEikEdwin
- How to change tooltip background color in Unity?
- How to Change the Hostname of a Linux System
- how to change the default mode of a linux device
- How to Change the Hostname of a Linux System
- Hello world!
- 《c++ primer》读书笔记 说明
- Unix基本命令
- 《c++ primer》读书笔记1
- 送给的所有男人女人
- How To Change the Background Color of a Tab Control
- 《c++ primer》读书笔记2
- struts相关资料,CSDN Struts blog秀
- 在jbuilder中用ant部署J2EE应用程序的构件文件
- 取得文章中的URL地址~
- 《c++ primer》读书笔记3
- Linux 指令大全
- 《c++ primer》读书笔记4
- 《c++ primer》读书笔记5