处理用于Tab Control的WM_PAINT事件还需要手动绘制项目吗?

时间:2012-05-24 19:06:00

标签: c++ winapi tabs drawing background-color

我在其上创建了一个标签控件和几个标签项。我希望我的标签控件(没有项目的区域)背景具有良好的外观。所以我使用GradientFill绘制制表符控件。但是这样做,标签项就消失了。这与父子窗口的情况不同。如果我想更改选项卡控件的背景,我是否应该绘制标签项?

以下是代码:

switch(message) {
    case WM_PAINT:
        HDC hdc;
        PAINTSTRUCT ps;
        RECT rectTabControl;

        hdc = BeginPaint(hwnd, &ps);

        GetClientRect(hwnd, &rectTabControl);

        TRIVERTEX        vert[2] ;
        GRADIENT_RECT    gRect;

        vert [0] .x      = 0;
        vert [0] .y      = 0;
        vert [0] .Red    = 0x1000;
        vert [0] .Green  = 0x0000;
        vert [0] .Blue   = 0x0000;
        vert [0] .Alpha  = 0x0000;

        vert [1] .x      = rectTabControl.right;
        vert [1] .y      = rectTabControl.bottom; 
        vert [1] .Red    = 0xff00;
        vert [1] .Green  = 0x0000;
        vert [1] .Blue   = 0x0000;
        vert [1] .Alpha  = 0x0000;

        gRect.UpperLeft  = 0;
        gRect.LowerRight = 1;

        GradientFill(hdc,vert,2,&gRect,1,GRADIENT_FILL_RECT_H);

        EndPaint(hwnd, &ps);
        return 0;
}

1 个答案:

答案 0 :(得分:1)

“如果我想更改标签控件的背景,我还应该绘制标签项吗?”