Ergebnis 1 bis 10 von 10

Thema: Frage zu transparenten Forms/Designs

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    Frage zu transparenten Forms/Designs

    (Der Threadtitel ist vielleicht schlecht gewählt. Wer was besseres weiss, bitte sagen/editieren ^^)

    Sicherlich kennen die meisten Anwendungen, die Daten, von unterschiedlicher Herkunft, auf den Desktop anzeigen (z.B. Rainlendar oder Samurize)

    Was mich aber mal interessieren würde, wie arbeiten diese Anwendungen? Wie schaffen sie es, dass diese Anwendungen auf dem Desktop liegen und man durch denen "durchklicken" kann?

    Ich möchte jetzt keine Codebeispiele sehen oder sonstiges aber jemand ne Ahnung, mit welcher Programmiersprache solche Anwendungen geschrieben worden sind oder obs dafür sogar eine API gibt?

    google konnte mir da auch nicht so weiterhelfen. Ich fand nur Beispiele, wie man Fenster eine bestimmte Form (Kreis, Elipse, Rechteck mit und ohne runden Ecken),mittels einer WinAPI, verpassen kann aber nie ein Beispiel, dass es so aussieht, als würde der Text direkt auf dem Desktophintergrund liegen.

  2. #2
    Zitat Zitat von Whiz-zarD Beitrag anzeigen
    (Der Threadtitel ist vielleicht schlecht gewählt. Wer was besseres weiss, bitte sagen/editieren ^^)

    Sicherlich kennen die meisten Anwendungen, die Daten, von unterschiedlicher Herkunft, auf den Desktop anzeigen (z.B. Rainlendar oder Samurize)

    Was mich aber mal interessieren würde, wie arbeiten diese Anwendungen? Wie schaffen sie es, dass diese Anwendungen auf dem Desktop liegen und man durch denen "durchklicken" kann?

    Ich möchte jetzt keine Codebeispiele sehen oder sonstiges aber jemand ne Ahnung, mit welcher Programmiersprache solche Anwendungen geschrieben worden sind oder obs dafür sogar eine API gibt?

    google konnte mir da auch nicht so weiterhelfen. Ich fand nur Beispiele, wie man Fenster eine bestimmte Form (Kreis, Elipse, Rechteck mit und ohne runden Ecken),mittels einer WinAPI, verpassen kann aber nie ein Beispiel, dass es so aussieht, als würde der Text direkt auf dem Desktophintergrund liegen.
    Das geht soweit ich weiss mit zwei moeglichkeiten ...

    1) Programme erstellen eine entsprechende HTML Seite und lassen die als "Active Web-Desktop" anzeigen.

    2) Das mit deinen Ellipsen und Rechtecken durch die Windows-API ist schon genau richtig. Damit koennte man das Fenster bis auf Rechtecke unmittelbar hinter dem Text reduzieren. Und dann koenntest du den restlichen Hintergrund mit dem Desktop-Bildpuffer fuellen ... ggf gibts auch eine Windows-Farbe die durchscheinen simuliert, kann mich gerade nicht erinnern.

  3. #3
    Zitat Zitat von Ineluki Beitrag anzeigen
    Das geht soweit ich weiss mit zwei moeglichkeiten ...

    1) Programme erstellen eine entsprechende HTML Seite und lassen die als "Active Web-Desktop" anzeigen.

    2) Das mit deinen Ellipsen und Rechtecken durch die Windows-API ist schon genau richtig. Damit koennte man das Fenster bis auf Rechtecke unmittelbar hinter dem Text reduzieren. Und dann koenntest du den restlichen Hintergrund mit dem Desktop-Bildpuffer fuellen ... ggf gibts auch eine Windows-Farbe die durchscheinen simuliert, kann mich gerade nicht erinnern.
    1. Dann müsste man es doch aber in den Anzeige-Einstellungen doch sehen können, ob der Desktop als Active Desktop geschaltet worden ist, oder nicht?

    2. Das Problem hierbei ist aber, dass man durch das Fenster nicht "durchklicken" kann. Also man kann keine Dateien, die hinter dem Fenster liegen, anklicken, was man aber bei meinen beiden Beispielen machen kann.

    Gibt es vielleicht möglichkeiten mit DirectDraw irgendwas in diese Richtung zu machen?

  4. #4
    Du kannst problemlos mit normalen API Funktionen auf den Desktop zeichnen, das ist kein Problem.

    Und das mit den Rechtecken meinte ich so, dass nur die rechtecke, die genau hinter dem Text liegen zum fenster gehoeren. dann kannst du den text etc mit funktionen belegen, aber ueberall sonst kannst du durch das fenster durchklicken.

  5. #5
    Zitat Zitat von Ineluki Beitrag anzeigen
    Und das mit den Rechtecken meinte ich so, dass nur die rechtecke, die genau hinter dem Text liegen zum fenster gehoeren. dann kannst du den text etc mit funktionen belegen, aber ueberall sonst kannst du durch das fenster durchklicken.
    Diese Anwendungen, die ich meine, bestehen nicht mal aus Rechtecken.
    Das ist ja das eigenartige, was ich nicht verstehe. Die bestehen nur aus Text auf dem Desktop. Da sind keine Rechtecken oder sonstiges im Spiel. Wenn ich exakt ein Pixel neben der Schrift klicke, befindet sich der Mauszeiger auf dem Desktop.
    Einige Anwendungen haben sogar die Möglichkeit, dass sie überhaupt nicht mehr anklickbar sind und der Mauszeiger sich immer auf dem Desktop befindet.

    Ich habe schon etliche Coding-Seiten zu etlichen Programmiersprachen abgegrast aber ich finde nirgends ein Codeschnippsel, womit man sowas realisieren kann oder der mir ein Hinweis geben kann, wie sowas gemacht wird, geschweige welche API Funktion dort zum Einsatz kommt.
    Wie gesagt, ich finde nur WinAPI Funktionen, die das Fenster eine bestimmte Form gibt aber nicht dass ich Text auf dem Desktop schreibe.

  6. #6
    Einfach den Font auf HDC 0 zeichnen. das sollte der Desktop sein, wenn ich mich nicht irre. Ansonsten immer mit API den Parent des Fensters so lange rekursiv abfragen, bis der sich nicht mehr aendert (das ist der Desktop) und dessen HDC bzs Handle zum zeichnen benutzen, als ob es das eigene Fenster waere. Ging zumindest unter W95 noch problemlos.

  7. #7
    ich würde ja sagen: ganz stumpf auf dem hintergrundbild, dass ja irgendwo im speicher liegen muss, schrift draufpappen. also auslesen, in eine bilddatei, da schrift drauf, und zurück damit. müsste zumindest theoretisch funktionieren (zumindst nicht-anklickbar)

  8. #8
    HWND des Desktops ist glaub ich NULL, aber kann sein, dass der gesperrt ist, um dafür einen HDC zu erstellen. Ausserdem kann man das Fenster ja auch transparent machen und bei den Windowstyles einfach nichts reintun (so bekämst du auch deine eigene Redraw Nachricht) oder so ähnlich. (Das klappt wahrscheinlich fürs durch den Text durchklicken nicht)

  9. #9
    Zitat Zitat von Drakes Beitrag anzeigen
    HWND des Desktops ist glaub ich NULL, aber kann sein, dass der gesperrt ist, um dafür einen HDC zu erstellen. Ausserdem kann man das Fenster ja auch transparent machen und bei den Windowstyles einfach nichts reintun (so bekämst du auch deine eigene Redraw Nachricht) oder so ähnlich. (Das klappt wahrscheinlich fürs durch den Text durchklicken nicht)
    Beim Transparent machen des Fensters wird auch der Inhalt transparent.
    Also würde auch die Schrift verschwinden, wenn ich das Fenster vollständig transparent machen würde.

  10. #10
    Zitat Zitat von Whiz-zarD Beitrag anzeigen
    Beim Transparent machen des Fensters wird auch der Inhalt transparent.
    Also würde auch die Schrift verschwinden, wenn ich das Fenster vollständig transparent machen würde.
    Nein, es gibt eine Extra Style Option, welche den Hintergrund transparent erscheinen lässt.

    Edit: WS_EX_LAYERED gibt es einerseits:
    Zitat Zitat von Msdn
    Layered Windows
    Using a layered window can significantly improve performance and visual effects for a window that has a complex shape, animates its shape, or wishes to use alpha blending effects. The system automatically composes and repaints layered windows and the windows of underlying applications. As a result, layered windows are rendered smoothly, without the flickering typical of complex window regions. In addition, layered windows can be partially translucent, that is, alpha-blended.
    Das hab ich jedoch noch nie verwendet, jedoch ist der Hintergrund meines Fenster meiner Anwendung zu Beginn transparent, ich weiss nicht, wie sich das später machen lässt:
    Code:
    WNDCLASSEX wincl;
    wincl.hbrBackground = NULL;
    Das =NULL macht, dass man den Hintergrund selber neuzeichnen muss, wodurch der Hintergrund transparent ist.

    Edit2: btw. bei mir ist HWND_DESKTOP als Variable/Konstante vordefiniert.

    Geändert von Drakes (17.03.2009 um 18:26 Uhr)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •