オーナードローで自力で描画する必要があります。
以下が参考になります。
MFCのタブコントロールの背景を灰色に変える。
How To Change the Background Color of a Tab Control
具体的には、以下のような手順、ソースになります。
- リソースエディタにてタブのプロパティ
Ower Draw Fixed
をTrue
に変更。
- コントロール変数として
m_tab
を追加。
- タブの親
CDialog
にWM_DRAWITEM
ハンドラを追加。
C++
1void CHogeDlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpdis)
2{
3 // タブ
4 if( lpdis->hwndItem == m_tab.GetSafeHwnd()){
5
6 char szTabText[100];
7 memset(szTabText, '\0', sizeof(szTabText));
8
9 TC_ITEM tci;
10 tci.mask = TCIF_TEXT;
11 tci.pszText = szTabText;
12 tci.cchTextMax = sizeof(szTabText)-1;
13
14 m_tab.GetItem(lpdis->itemID, &tci);
15
16 CDC *dc = CDC::FromHandle(lpdis->hDC);
17
18 // 選択なら背景色を変更
19 COLORREF crBack = dc->GetBkColor();
20 if( lpdis->itemID == m_tab.GetCurSel()){
21 crBack = RGB(255,0,0);
22 }
23 CBrush brBack(crBack);
24 dc->FillRect(&lpdis->rcItem, &brBack);
25
26 // テキストも自力描画が必要。テキスト位置は適切に調整すべき
27 dc->SetBkColor(crBack);
28 dc->TextOut( lpdis->rcItem.left + 4, lpdis->rcItem.top + 4, tci.pszText, lstrlen(tci.pszText));
29 return;
30 }
31 CDialog::OnDrawItem(nIDCtl, lpdis);
32}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/31 07:11