GDI auf Titelleiste

  • Ich möchte Informationen auf die Titelleiste eines Fensters malen, die auch nach einem Repaint der sogenannten Non-Client-Area (NC) erhalten bleiben.

    Ich reagiere dazu auf die Window-Message $WM_NCPAINT

    Problem: entweder ich muss den ganzen Rahmen selbst zeichen (keine Lösung) oder mein gezeichnetes (Beispiel schwarzer Rahmen)
    wird von der Standard-Funktion nach dem Zeichnen wieder übermalt (je nach Return-Wert meiner Funktion)

    Wie kann ich erreichen, das Windows erst den Standard-Rahmen zeichnet auf den ich dann etwas drauf zeichne?


    Scheinlösungen wie Overlay-Windows die dem Fenster folgen usw würde ich gern vermeiden.


    Gruß

    Blues

    • Offizieller Beitrag

    Ich werde nicht ganz schlau, was du eigentlich möchtest. Dein Bsp. macht für mich wenig Sinn, da du durch GDI-Malerei aus einem Sizebox-Window ein Popup-Window machst - dann nimm doch gleich den Style.
    Weiterhin solltest du dir vor Augen halten, dass GDI-Zeichnung in Fenstern immer einen Pferdefuß hat: Die Paint-Messages des Systems bewirken keine Neuzeichnung der GDI-Malerei, da musst du immer zusätzlich diese Messages abfragen und mit einem Repaint deiner zeichnungen reagieren.
    Insofern bevorzuge ich Child-Windows anstelle von GDI-Gepinsel. :P

    Was deine NCPAINT-Auswertung angeht, da reicht es imho nicht auf Paint zu reagieren, sondern du musst bereits bei PrePaint aktiv werden.