transparentes fenster ohne rahmen



  • Hi,

    ich versuche ein transparentes Fenster ohne Rahmen zu erzeugen, sodass ich teile davon mittels bitblt mit Bitmaps zumalen kann, aber der restliche Desktop noch zur vollen Verfügung steht.

    Bisher habe ich zwei Möglichkeiten für die Transparenz gefunden:
    1. SetLayeredWindowAttributes(hWnd, RGB(255, 255, 255), 0, LWA_COLORKEY); wobei bei CreateWindowEx() der erste Parameter WS_EX_LAYERED sein muss.
    Das funktioniert ganz gut
    2. gleich in der CreateWindowEx() als erweiterten Stil WS_EX_TRANSPARENT
    Das funktioniert leider nicht so gut, d.h. meine Bitmaps vermischen sich mit dem Hintergrund etwas, sodass man weder die Bilder noch den Hintergrund richtig sieht.

    Allerdings dachte ich, dass die 2. Variante die elegantere ist(weil man nichts zusätzliches braucht)
    Und für den Rahmen habe ich nichts gefunden. Nur Konstanten um ihn dicker zu machen...(dwStyle ist nur WS_VISIBLE)
    Vielleicht kann mir irgendjemand hier helfen?



  • Meinst du das hier:

    // Set WS_EX_LAYERED on this window 
    SetWindowLong(hwnd, GWL_EXSTYLE,
            GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED);
    // Make this window 70% alpha
    SetLayeredWindowAttributes(hwnd, 0, (255 * 70) / 100, LWA_ALPHA);
    

    mit WS_POPUP ?

    (MSDN mal wieder)



  • das WS_POPUP passt perfekt.(wieso steht nirgends, dass ein Popup keinen Rahmen hat?)

    das andere hab ich ja bereits(nur mit vollständiger Transparenz). Ich wollte eigentlich dieses WS_EX_TRANSPARENT verwenden um mir zusätzliche Funktionsaufrufe zu ersparen, aber wenn das nicht geht, mus sich halt diese Methode verwenden(die wenigstens gut funktioniert)

    Danke dir.



  • Wenn du das mit SetLayeredWindowAttributes weglässt und nur noch WS_EX_LAYERED benutzt ist das Fenster doch vollständig transparent und du kannst darauf deine Bildchen zeichnen, oder?



  • Andrew3726 schrieb:

    Wenn du das mit SetLayeredWindowAttributes weglässt und nur noch WS_EX_LAYERED benutzt ist das Fenster doch vollständig transparent und du kannst darauf deine Bildchen zeichnen, oder?

    Jein.
    Das Fenster ist vollständig transparent. Die Bilder leider auch, d.h. ich sehe nur meinen Desktop ohne Bilder.



  • Und was hast Du für ein Problem mit LWA_COLORKEY? Nur damit kannst Du teilbereiche unsichtbar machen...


Anmelden zum Antworten