我不知道如何使用它们.因此,有利有弊的示例代码是完美的.哪一个更受欢迎?为什么?
你好,新年快乐,(可以说直到周四)
我正在尝试更改CTabCtrl类中选项卡的颜色.我正在尝试创建自己的ReskinCTablCtrl,以便我可以在单独的类中调用它,并在整个程序中轻松使用它.
目前我能够改变CTabCtrl的背景颜色,但我无法修改标签本身.
我用ON_WM_ERASEBKGND()
它画背景,它没有问题:
BOOL ReskinCTabCtrl::OnEraseBkgnd(CDC* pDC)
{
CRect rect;
GetClientRect(&rect);
CBrush myBrush(RGB(51, 51, 51)); // dialog background color
BOOL bRes = pDC->PatBlt(0, 0, rect.Width(), rect.Height(), PATCOPY);
pDC->SetBkColor(RGB(51, 51, 51));
pDC->FillRect(&rect, &myBrush);
return bRes;
}
Run Code Online (Sandbox Code Playgroud)
但是,我一直不知道更改标签颜色本身.它们仍然是默认的MFC颜色.我试图实施ON_WM_PAINT()
,ON_WM_DRAWITEM()
但没有任何成功.我想我可以使用OnDraw和DrawItem来获取特定的tab rect,类似于我在这个问题的最后发布的第二个链接示例.
void ReskinCTabCtrl::OnPaint() {
...
// paint the tabs first and then the borders
int nTab = GetItemCount();
int nSel = GetCurSel();
if (!nTab) // no pages added
return;
while (nTab--)
{
if (nTab != nSel)
{
dis.itemID …
Run Code Online (Sandbox Code Playgroud)