DrawText auf Desktop einblenden?



  • Ich frage mich gerade eher, warum noch ein LayeredWindow verwendet wird, wenn mit GDI+ bereits mit Transparenz gemalt werden kann.



  • Hallo Youka,

    ich hatte layeredWnd so verstanden, dass ein layered window im Gegensatz zu meinem Vorhaben(Timer, welcher den Status-Text z.B. alle 50ms direkt auf dem Desktop-HDC erneuert) eine "saubere" Lösung sei. Daher habe ich versucht das Umzusetzen. Es geht mir darum, dass nur die Status-Meldung in Form eines transparenten Textes bis zum Ende eines Ereignisses vor allen anderen Fenstern zu sehen ist und nicht durch irgendwelche anderen Fenster unvorhersehbar teilweise oder ganz "übermalt" wird, so wie es jetzt der Fall ist. Die Status-Meldung soll auch nicht andere Anwendungen behindern(also Mausklicks ignorieren).
    Wenn ich das richtig verstanden habe, gibt es auch noch Overlay-Einblendungen, die direkt über die Grafikkarte gehen. Mit denen will ich natürlich nicht konkurrieren, mir reicht es, wenn meine Status-Meldung stets vor ganz normalen Fenster-Anwendungen wie Schreibprogrammen, Browsern oder Email-Programmen zu sehen ist.

    Viele Grüße,
    GrandSlam



  • Zuerst einmal: CreateWidnowEx(+RegisterClassEx) verwenden! Der erste Parameter ist dann (WS_EX_LAYERED|WS_EX_TRANSPARENT). Für dwStyle würde ich WS_POPUP empfehlen, weil dieses Fenster dann über allen anderen liegt und zudem das Client area dem Window area entspricht.
    Bei UpdateLayeredWindow() muss, soweit ich weiß, mindestens einmal die Größe angeben werden. Der einfach halber, würde ich pptDst(<-GetWindowRect), psize und pptSrc (<-POINT={0,0}) immer angeben.





  • Bleibt nur noch die Frage wie man das Fenster hinter allen anderen Top-Level Fenstern hält, und idealerweise auch sichtbar hält wenn jmd. den "show desktop" Shortcut/Button drückt.



  • hustbaer schrieb:

    Bund idealerweise auch sichtbar hält wenn jmd. den "show desktop" Shortcut/Button drückt.

    WS_EX_TOPMOST



  • Scheinbar müssen gewisse Parameter angegeben werden, auch wenn in der Doku was von optional steht.

    http://www.c-plusplus.net/forum/312705-full



  • topmost schrieb:

    hustbaer schrieb:

    Bund idealerweise auch sichtbar hält wenn jmd. den "show desktop" Shortcut/Button drückt.

    WS_EX_TOPMOST

    hustbaer schrieb:

    Bleibt nur noch die Frage wie man das Fenster hinter allen anderen Top-Level Fenstern hält, und idealerweise auch sichtbar hält wenn jmd. den "show desktop" Shortcut/Button drückt.

    Nein, gerade nicht WS_EX_TOPMOST 🙄



  • hustbaer schrieb:

    topmost schrieb:

    hustbaer schrieb:

    Bund idealerweise auch sichtbar hält wenn jmd. den "show desktop" Shortcut/Button drückt.

    WS_EX_TOPMOST

    hustbaer schrieb:

    Bleibt nur noch die Frage wie man das Fenster hinter allen anderen Top-Level Fenstern hält, und idealerweise auch sichtbar hält wenn jmd. den "show desktop" Shortcut/Button drückt.

    Nein, gerade nicht WS_EX_TOPMOST 🙄

    Woher diese Forderung? Wenn er auf den Desktop zeichnet, übermalt er ja auch alle Fenster.



  • Uff.
    Mag sein dass ich das jetzt falsch verstanden habe.
    In dem Fall das 🙄 bitte postwendend an mich zurück.

    Ich hatte angenommen dass er meint dass er auf das Desktop-Fenster zeichnet, also das Ding was halt den Desktophintergrund malt. Das mit den Icons drauf. Und wenn man da draufmalt, dann bleibt das - sofern ich mich richtig erinnere - immer hübsch hinter allen Fenstern.

    Wobei ich mir jetzt nicht mehr so sicher bin. Wenn er wirklich etwas über allem anderen einblenben will, so ala Overlay, dann natürlich WS_EX_TOPMOST.


Anmelden zum Antworten