Для использования GDI вам понадобится функция GradientFill.Вы также можете использовать GDI + для получения градиентов.Вот простой пример GDI:
TRIVERTEX vert[2] ;
GRADIENT_RECT gRect;
vert [0] .x = 0;
vert [0] .y = 0;
vert [0] .Red = 0x0000;
vert [0] .Green = 0x0000;
vert [0] .Blue = 0x0000;
vert [0] .Alpha = 0x0000;
vert [1] .x = 100;
vert [1] .y = 32;
vert [1] .Red = 0x0000;
vert [1] .Green = 0x0000;
vert [1] .Blue = 0xff00;
vert [1] .Alpha = 0x0000;
gRect.UpperLeft = 0;
gRect.LowerRight = 1;
GradientFill(hdc,vert,2,&gRect,1,GRADIENT_FILL_RECT_H);
Что касается элемента управления вкладкой, вы можете создать подкласс элемента управления и переопределить его не-клиентские и клиентские обработчики рисования для визуализации градиента.
ДляДля подкласса управления сначала создайте элемент управления, а затем замените его функцию WNDPROC:
OldWndProc = (WNDPROC)SetWindowLongPtr (hControl, GWLP_WNDPROC, (LONG_PTR)NewWndProc);
, затем в вашем новом WNDPROC:
NewWndProc (usual args)
{
switch message
{
case paint:
draw gradient
return result
default:
return CallWindowProc (OldWndProc, ..args..); <- important!
}
}