im Fordergrund Zeichen



  • ich möchte ganz im Vordergrund etwas auf dem Bildschirm zeichen. Und es soll nur weggehen, wenn ich es dort lösche.

    Wollte zum Test einmal den Ganzen Bildschrim einfärben. Und das soll solange bleiben bis ich es lösche. Aber leider verschwindet das schon automatisch (z.B.: wenn ich Start drücke wird dort die Farbe gelöscht und man sieht start)

    CRect rcScreenSize;
    CWnd::GetDesktopWindow()->GetWindowRect(rcScreenSize);// hohlt Fenstergröße
    
    CDC DC = ::GetDC(NULL);
    DC.FillRect(rcScreenSize, &brush); // alles einfärben
    


  • Das sind Automatismen von Windows. Du musst im Prinzip alle Tastatur und Mausbefehle von deinem Programm schlucken lassen - ausser dem Löschbefehl. 😃

    Damit kann dir ein anderes Programm (NetSend) aber trotzdem dazwischen funken. (Das passiert aber auch bei vielen Spielen, die im Vollbild laufen.)



  • Ja so hatte ich mir das auch vorgestellt.

    Leider hilft mir das nicht weiter. Da ich ja will, das man im Hintergrund mit Windows weiter arbeiten kann.

    Also kleines Beispiel:
    Ich will eine Schrift die über den Bildschirm leuft ( ➡ wie Windows Bildschirmschoner "Marquee/Laufzeile"). Aber im Hintergrund soll man weiter mit Windows arbeiten können ⚠ . Das geht nicht, wenn ich die Nachrichten abfange für das neu Zeichnen 😞



  • Keiner eine Idee? Es gibt doch auch diese "Virtuellen Freund" die über den Bildschirm laufen. Also möglich muß es sein. Aber wie? Würde mich über n Tip freuen 😉



  • Hast du schon über die Möglichkeit eines transparenten Fensters nachgedacht?



  • @estartu_de
    Nein, da man dann ja nicht mehr im Hintergrund weiter arbeiten kann. Ich will an mehreren Stellen auf dem Schrim etwas Zeichen, da breuchte ich schon ein Maximierten Transparenten Dialog. Außerdem soll er auch über die Taskleiste gehen. Ich denk das wird nicht funktionieren oder ich muß alle Messages weiter Leiten an die Anwendung unter meinem Dialog.

    Geht das nicht einfacher?



  • Servus,

    ich weiss zwar nicht ob dir das weiterhilft aber vielleicht könntest du eine MDI erstellen. Dann nimmst du immer einzelne Fenster machst diese Transparent und positionierst sie auf deinem Bildschirm wo du sie gerade hinhaben willst oder du brauchst noch nichtmal eine MDI und erstellst einfach so einzelne Dialoge die du dann transparent positionierst.

    oder was ganz anderes
    du kannst ja auch jedesmal das Gezeichnete neu zeichnen lassen. Alle 2 sekunden oder so

    Hellsgore



  • Hmm, ich errinnere mich dunkel an einen Artikel in irgendeiner Zeitschrift, wo beschrieben wurde, wie man beliebig geformte Fenster erstellen kann.

    Das Beispiel sah in etwa wie eine von einem Kleinkind gemalte Bohne aus. Also wirklich Freiform. Allerdings brauchte man da .Net für. Deswegen habe ich mich nicht näher damit beschäftigt.

    (Aber ob über den Bildschirm wandernde Fenster das wahre sind?)

    Klingt das besser? Dann würde ich zu Hause mal gucken - sollte so etwa unter zwei bis drei Monaten begraben sein. 😃

    ------

    Diese "Virtuellen Freunde" könnten Microsoft Agents sein. Da gibt es eine Anleitung in der MSDN, wie man einen erstellt. Aber die haben ja nun leider nix mit Text gemeinsam.



  • Mal ne ganz andere Idee:

    🕶 Vielleicht solltest du diesen Effekt im Hintergrund nicht mit VC++ erzeugen sondern mit einer simplen Website, die du als Desktopmotiv angibst...

    PS: War nur so 'ne Idee... 🙄



  • Wenn du etwas auf den Desktop zeichnest dann tritt hier WIndows in Kraft. Wird das Rect von einem anderen Fenster überlagert und wieder geschlossen dann zeichnet Windows das Rect neu. Dies kann man nicht abschalten da sonst nach öffnen und schließen einen Fensters der Desktop nicht mehr da wäre.


Anmelden zum Antworten