Programm nur auf dem Desktop zeigen



  • Hallo,
    ich möchte mein Programm so schreiben, dass das Fenster immer auf dem Desktop angezeigt wird. Aber nur solange kein anderes Fenster darüber liegt. Also so was wie WS_EX_TOPMOST, aber nur für den Desktop. Wie kann ich so was machen?



  • Wiener!!!



  • Tobsbeam schrieb:

    Also so was wie WS_EX_TOPMOST, aber nur für den Desktop.

    Hä ?!

    Wie nur für den Desktop 😕 . WS_EX_TOPMOST bezieht sich doch auf den Desktop.



  • CodeFinder schrieb:

    Tobsbeam schrieb:

    Also so was wie WS_EX_TOPMOST, aber nur für den Desktop.

    Hä ?!

    Wie nur für den Desktop 😕 . WS_EX_TOPMOST bezieht sich doch auf den Desktop.

    Hallo 😃



  • Tobsbeam schrieb:

    Hallo,
    ich möchte mein Programm so schreiben, dass das Fenster immer auf dem Desktop angezeigt wird. Aber nur solange kein anderes Fenster darüber liegt. Also so was wie WS_EX_TOPMOST, aber nur für den Desktop. Wie kann ich so was machen?

    Ich glaube du meinst sowas wie Rainlendar
    Ist ne coole Sache, aber hab auch keine Ahnung wies geht -> Interessiert mich aber genauso 😋



  • ...ist das active desktop?



  • Ja, so was wie Rainlendar mein ich



  • Sorry, ich versteh nicht ganz worauf es euch dabei jetzt ankommt... 😕 Könnte das mal einer eläutern 😉 ... Vllt kannsch ja helfen 💡



  • Es geht darum, dass ein Fenster erstellt wird, dass auf dem Desktop "liegt". Es wird von jedem Fenster außer dem Desktop verdeckt. Deshalb sieht es so aus, als ob es ein Teil vom Desktop wäre -> Ziemlich cool 😃
    Rainlender (siehe Link oben) ist außerdem größtenteils durchsichtig. Würde auch Screenshot von Rainlender hochladen, wenn es sich Screenshoten ließe^^



  • http://sniptools.com/av/rainlendar.png da gibts einen Screenshot



  • Kann man sich nicht das DC des Desktops holen (und dann da etwas "hineinzeichnen") ?



  • Ja, glaub schon. Aber ich würde gern ein Fenster auf den Desktop bringen.



  • Kuldren schrieb:

    Kann man sich nicht das DC des Desktops holen (und dann da etwas "hineinzeichnen") ?

    Ja, das geht, mit GetDC( NULL );. Ist aber wirklich keine gute Lösung! Du musst dann z.B. wegen anderen Fenstern deine Ausgabe clippen.



  • Badestrand schrieb:

    Ihr seid häßliche Stricher!!!

    Ich würde mal sagen, du gibst nen bisschen Ruhe!!!



  • GetDesktopWindow(), und das als parent für nen transparentes Fenster nehmen. Sollte eigentlich gehen. Mit der z-order müsste man sich dann noch spielen bis das passt dass das eigene Fenster immer hinter den Icons liegt.



  • Hast du dafür ein Beispiel. Ich wüsste nämlich nicht wie das gehen sollte.



  • Ringo2006 schrieb:

    Badestrand schrieb:

    Ihr seid häßliche Stricher!!!

    Ich würde mal sagen, du gibst nen bisschen Ruhe!!!

    Hallo???

    TobsBeam schrieb:

    Hast du dafür ein Beispiel. Ich wüsste nämlich nicht wie das gehen sollte.

    Beim erstellen von deinem Fenster/Dialog gibst du als hParent GetDesktopWindow() an (siehe hustbaer).
    Mit SetWindowPos( hWnd, GetDesktopWindow(), 0,0,0,0, SWP_NOMOVE|SWP_NOSIZE ); müsste dein Fenster direkt "über" dem Desktop sein. Oder als Parameter statt GetDesktopWindow() HWND_BOTTOM.



  • Das Fenster geht zwar nicht unter die Icons, aber OK. Wie mach ich dem Fenster denn dann klar, dass es nicht minimiert werden darf, sondern immer auf dem Desktop bleibt?



  • Hab mir das Programm (Rainlendar) auch mal heruntergeladen und angeschaut.

    Also eigentlich ist das doch nichts besonderes...
    Die Transparenz bekommt man mit SetLayeredWindowAttributes hin, die Form
    mit Extended-Regions und das Verhalten in der Z-Order ist doch wie bei jedem
    anderen Non-Topmost-Fenster auch... (Man kann es in den Vordergrund holen, in
    dem man darauf klickt, dann überdeckt es auch andere Fenster. Ist das Fenster
    aktiv und ein anderes bekommt -durch welche Aktion auch immer- den Fokus,
    verschwindet das Programmfenster dahinter...das ist doch Standard). Was mir
    noch augefallen ist, das es implizit 'dockable' ist, was sich aber mit nem
    virtuellen Gitternetz über dem Desktop realisieren ließe.



  • Ja, ist nichts Besonderes, aber mir ist auf Anhieb nicht eingefallen, wie man das machen könnte 😞

    Naja, wegen Minimieren und so:
    WS_EX_TOOLWINDOW, oder einfach ohne SystemMenü.


Log in to reply