|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
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 ѕ that is, call the IsIconic function and check for the return value TRUE.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Чертеж Заказного Фона Окна
Вы можете сделать вашим собственным фоном окна а не иметь Окно делает это для Вас. Большинство приложений определяют ручку щетки или системной цветной величины для щетки фона класса при регистре класса окна; Окно использует щетку или окрашивает, чтобы делать фоном. Если Вы установили бы щетку фона класса на НЕДЕЙСТВИТЕЛЬНЫЙ, тем не менее, Окно посылает сообщение WM_ERASEBKGND в вашу процедуру окна всякий раз, когда фон окна должен быть сделан, позволяя Вы делаете заказным фоном.
В следующем примере, процедура окна делает большим образцом шахматной доски, который устанавливается аккуратно в окне. Процедура заполняет клиенту область белой щеткой затем делает тринадцатью 20-использование by-20 прямоугольников серая щетка. Показ DC, чтобы использоваться при чертеже фона определен в параметре wParam для сообщения.
HBRUSH hbrWhite, hbrGray; . . . случай WM_CREATE: hbrWhite = GetStockObject(WHITE_BRUSH); hbrGray = GetStockObject(GRAY_BRUSH); возвращайте 0L; случай WM_ERASEBKGND: hdc = (HDC) wParam; GetClientRect(hwnd, &rc); SetMapMode(hdc, MM_ANISOTROPIC); SetWindowExtEx(hdc, 100, 100, НЕДЕЙСТВИТЕЛЬНОЕ); SetViewportExtEx(hdc, rc.right, rc.bottom, НЕДЕЙСТВИТЕЛЬНЫЙ); FillRect(hdc, &rc, hbrWhite); для (i = 0; я < 13; я++) { x = (я * 40) % 100;
y = ((я * 40) / 100) * 20; SetRect(&rc, x, y, x + 20, y + 20); FillRect(hdc, &rc, hbrGray); } возвращайте 1L;
Если приложение делает своим собственным минимизированным окном, Окно также посылает сообщение WM_ERASEBKGND в процедуру окна, чтобы делать фоном для минимизированного окна. Вы можете использовать ту же технику использованную WM_PAINT, чтобы определять минимизировано окно U то есть, вызовите функцию IsIconic и проверены на наличие обратной ИСТИНЫ величины.
|
|
|
|
| |