// Dieser ROP-Code malt alle weien Stellen des Quell-
// bilds mit der aktuellen Farbrolle, whrend alle
// schwarzen Stellen des Quellbildes transparent
// bleiben.

#define ROP_STENCIL 0x00E20746L

    case WM_PAINT:
    {
    auto PAINTSTRUCT    PS;
    auto HDC            hDC, hMemDC;
    auto HBITMAP        hBitmap;
    auto HBRUSH         hBrush;
    auto RECT           Rt;
    auto int            iSize, iDestX, iDestY;

    hDC = BeginPaint( hWnd, &PS );

    // Lade das Rasterbild
    hBitmap = LoadBitmap( hInst, "LOGO" );
    iSize = 100;        // Gre des Bildes LOGO

    // Lege einen Speicherkontext an und trage das Logo
    // darin ein.
    hMemDC = CreateCompatibleDC( hDC );
    hBitmap = SelectObject( hMemDC, hBitmap );

    // Bestimme die Gre der Ausgabeflche
    GetClientRect( hWnd, &Rt );

    // Bestimme das Zentrum der Ausgabeflche und
    // die Ausgabeposition des Logos
    iDestX = ( Rt.right - Rt.left - iSize ) / 2;
    iDestY = ( Rt.bottom - Rt.top - iSize ) / 2;

    // Hinweise fr den "Spezialeffekt":
    // Ein Schatten auf der linken Seite und oberhalb
    // des Bildes sowie eine helle Umrandung auf der
    // rechten Seite und am unteren Rand bewirken ein
    // Aussehen als sei das Logo in den Bildschirm
    // hineingedrckt.
    // Das Vertauschen der hellen und dunklen Umran-
    // dungen lt das Logo aus dem Bild heraustreten.
    // Die hellen und dunklen Rahmen wirken am besten
    // vor einem neutralen Hintergrund mittlerer
    // Helligkeit. Falls Sie das Bild ohne 3-D-Effekte
    // ausgeben wollen, berspringen Sie einfach die
    // Punkte 1, 2 und 3.

    // 1: Setze den Hintergrund auf Hellgrau
    hBrush = CreateSolidBrush( RGB( 191, 191, 191 ) );
    FillRect( hDC, &Rt, hBrush );
    DeleteObject( hBrush );

    // 2: Male den Schatten in Dunkelgrau
    hBrush = CreateSolidBrush( RGB( 127, 127, 127 ) );
    hBrush = SelectObject( hDC, hBrush );
    BitBlt( hDC, iDestX - 1, iDestY - 1, iSize, iSize,
            hMemDC, 0, 0, ROP_STENCIL );
    hBrush = SelectObject( hDC, hBrush );
    DeleteObject( hBrush );

    // 3: Setze die Lichter in Wei
    hBrush = CreateSolidBrush( RGB( 255, 255, 255 ) );
    hBrush = SelectObject( hDC, hBrush );
    BitBlt( hDC, iDestX + 1, iDestY + 1, iSize, iSize,
            hMemDC, 0, 0, ROP_STENCIL );
    hBrush = SelectObject( hDC, hBrush );
    DeleteObject( hBrush );

    // 4: Gib das Bild in Rot aus
    hBrush = CreateSolidBrush( RGB( 255,   0,   0 ) );
    hBrush = SelectObject( hDC, hBrush );
    BitBlt( hDC, iDestX    , iDestY    , iSize, iSize,
            hMemDC, 0, 0, ROP_STENCIL );
    hBrush = SelectObject( hDC, hBrush );
    DeleteObject( hBrush );

    // Aufrumen: Trage das Originalbild wieder in den
    // Gertekontext ein und lsche den Speicherkontext.
    SelectObject( hMemDC, hBitmap );
    DeleteDC( hMemDC );

    EndPaint( hWnd, &PS );
    }
    break;

