标签: ctabctrl

哪个是MFC中首选的CTabCtrl与CPropertySheet?

我不知道如何使用它们.因此,有利有弊的示例代码是完美的.哪一个更受欢迎?为什么?

c++ mfc ctabctrl cpropertysheet

7
推荐指数
1
解决办法
7612
查看次数

如何更改CTabCtrl选项卡颜色?

你好,新年快乐,(可以说直到周四)

我正在尝试更改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)

c++ mfc ctabctrl

4
推荐指数
1
解决办法
1445
查看次数

标签 统计

c++ ×2

ctabctrl ×2

mfc ×2

cpropertysheet ×1