Drawing a Custom Window Background

You can draw your own window background rather than having Windows draw it for you. Most applications specify a brush handle or system color value for the class background brush when registering the window class; Windows uses the brush or color to draw the background. If you set the class background brush to NULL, however, Windows sends a WM_ERASEBKGND message to your window procedure whenever the window background must be drawn, letting you draw a custom background.

In the following example, the window procedure draws a large checkerboard pattern that fits neatly in the window. The procedure fills the client area with a white brush and then draws thirteen 20-by-20 rectangles using a gray brush. The display DC to use when drawing the background is specified in the wParam parameter for the message.

HBRUSH hbrWhite, hbrGray;

.

.

.

case WM_CREATE:

hbrWhite = GetStockObject(WHITE_BRUSH);

hbrGray = GetStockObject(GRAY_BRUSH);

return 0L;

case WM_ERASEBKGND:

hdc = (HDC) wParam;

GetClientRect(hwnd, &rc);

SetMapMode(hdc, MM_ANISOTROPIC);

SetWindowExtEx(hdc, 100, 100, NULL);

SetViewportExtEx(hdc, rc.right, rc.bottom, NULL);

FillRect(hdc, &rc, hbrWhite);

for (i = 0; i < 13; i++) {

x = (i * 40) % 100;

y = ((i * 40) / 100) * 20;

SetRect(&rc, x, y, x + 20, y + 20);

FillRect(hdc, &rc, hbrGray);

}

return 1L;

If the application draws its own minimized window, Windows also sends the WM_ERASEBKGND message to the window procedure to draw the background for the minimized window. You can use the same technique used by WM_PAINT to determine whether the window is minimized pics/WIN3200090001.gif that is, call the IsIconic function and check for the return value TRUE.

Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
Databases for Amazon shops developers
Amazon Categories Database
Browse Nodes Database