Partager via


Dessin d’un arrière-plan de fenêtre personnalisée

Vous pouvez dessiner votre propre arrière-plan de fenêtre au lieu de le faire dessiner pour vous par le système. La plupart des applications spécifient une poignée de pinceau ou une valeur de couleur système pour le pinceau d’arrière-plan de classe lors de l’inscription de la classe de fenêtre ; le système utilise le pinceau ou la couleur pour dessiner l’arrière-plan. Toutefois, si vous définissez le pinceau d’arrière-plan de classe sur NULL, le système envoie un message WM_ERASEBKGND à votre procédure de fenêtre chaque fois que l’arrière-plan de la fenêtre doit être dessiné, ce qui vous permet de dessiner un arrière-plan personnalisé.

Dans l’exemple suivant, la procédure de fenêtre dessine un grand modèle de damier qui s’adapte parfaitement à la fenêtre. La procédure remplit la zone cliente avec un pinceau blanc, puis dessine treize rectangles de 20 par 20 à l’aide d’un pinceau gris. Le contexte de périphérique d’affichage à utiliser lors du dessin de l’arrière-plan est spécifié dans le paramètre wParam pour le 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; 

Si l’application dessine sa propre fenêtre réduite, le système envoie également le message WM_ERASEBKGND à la procédure de fenêtre pour dessiner l’arrière-plan de la fenêtre réduite. Vous pouvez utiliser la même technique que celle utilisée par WM_PAINT pour déterminer si la fenêtre est réduite, c’est-à-dire appeler la fonction IsIconic et case activée pour la valeur de retour TRUE.