void OnEraseBkGnd(HWND hwnd)
{
/* Vars */
HDC dc; /* Standard Device Context; used to do the painting */
/* rect = Client Rect of the window;
Temp = Temparory rect tangle for the color bands */
RECT rect, temp;
HBRUSH color; /* A brush to do the painting with */
/* Get the dc for the wnd */
dc = GetDC(hwnd);
/* Get the client rect */
GetClientRect(hwnd, &rect);
/* Start color; Change the R,G,B values
to the color of your choice */
int r1 = 255, g1 = 0, b1 = 0;
/* End Color; Change the R,G,B values
to the color of your choice */
int r2 = 255, g2 = 255, b2 = 0;
/* loop to create the gradient */
for (int i = 0; i < rect.right; i++)
{
/* Color ref. for the gradient */
int r, g, b;
/* Determine the colors */
r = r1 + (i * (r2 - r1) / rect.right);
g = g1 + (i * (g2 - g1) / rect.right);
b = b1 + (i * (b2 - b1) / rect.right);
/* Fill in the rectangle information */
/* The uper left point of the rectangle
being painted; uses i as the starting point*/
temp.left = i;
/* Upeer Y cord. Always start at the top */
temp.top = 0;
/* Okay heres the key part,
create a rectangle thats 1 pixel wide */
temp.right = i + 1;
/* Height of the rectangle */
temp.bottom = rect.bottom;
/* Create a brush to draw with;
these colors are randomized */
color = CreateSolidBrush(RGB(r, g, b));
/* Finally fill in the rectangle */
FillRect(dc, &temp, color);
}
}
将OnEraseBkGnd()放到WM_ERASEBKGND事件中。