Programm nur auf dem Desktop zeigen
-
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ü.
-
Oder einfach WS_CHILD

-
Hallo nochmal,
ich bin gerade über das gestolpert, was ich eigentlich gemeint habe.HWND ProgmanHwnd = FindWindow("Progman", "Program Manager");
SetParent(hWnd, ProgmanHwnd);Damit wird das Fenster nur auf dem Desktop angezeigt und bleibt auch da, wenn ich in der Taskleiste auf "Desktop anzeigen" clicke.
Mfg, Tobsbeam