Einfachen Schriftzug zeichnen?



  • Hi!

    Ich brauche mal euren Rat:
    Ich bin leidenschaftlicher Gamer und zocke oft Spiele, die den Ganzen Bildschirm einnehmen, kurz Fullscreen games.
    Das blöde was Fullscreen Games an sich haben ist, dass sie den ganzen Bildschirm einnehmen :). In letzter Zeit hätte ich deshalb fast einige wichtige Termine versäumt, da in meinem Zimmer keine Uhr hängt und man beim Zocken manchmal die Zeit vergisst. Deshalb bin ich auf die idee gekommen ein tool zu proggen, das mir die Uhrzeit anzeigt, wenn ich auf eine festgelegte Taste drücke. Es soll ein einfacher einfarbiger schriftzug sein, der außerhalb der Anwendung, also Systemweit angezeigt werden soll. Wie kann man sowas machen? Habt ihr ne Idee?

    Wäre dankbar für jede Antwort.

    mfg Perner



  • Mein Vorschlag:
    -SDI-Anwendung (kann man minimieren)
    -auf Tastendruck wird eine Dialogbox eingeblendet, in der die Zeit angezeigt wird.

    Realisierung sollte machbar sein, hab aber sowas noch nicht ausprobiert. Das mit dem Hotkey sollte nicht so schwierig sein und ich bin mir sicher, dass man die Dialogbox auch so konfigurieren kann, dass sie immer im Vordergrund angezeigt wird.
    Wenn mir noch was brauchbares einfällt sag ichs dir.



  • Deine idee ist an sich nicht schlecht, dies habe ich aber schon ausprobiert. Das problem dabei ist, dass sowas die meisten Spiele nicht mitmachen und abstürzen, weil man meistens durch die Dialogbox auf dem Desktop landet. Ich hatte da wirklich an einen Schriftzug gedacht, den ich auf den Bildschirm zeichnen lassen will.

    mfg Perner



  • Ich weiß ja nicht ob das hilft, aber wenn ich im Thunderbird ne Mail kriege wird unten Links nen kleines "Fenster" eingeblendet wieviele Mails ich habe... Das hat bis jetzt noch jedes Spiel überblendet. Vielleicht schauste mal in den Quelltext von dem Ding. 🙂



  • Na klar geht das. Tasten abfangen wir ja kein Problem sein. KB-Hook.

    Dann einfach die Uhr auf den Desktop zeichen. Ich habe aber noch nicht geschafft diese wieder zu löschen.(Hab mich aber auch nicht lange damit beschäftigt). Einfach Desktop neu zeichen geht ja nicht.

    CWnd *pWnd;   // Zeiger auf ein CWnd Objekt
    	CRect rec;    // CRect objekt
    	pWnd = GetDesktopWindow();   // hole mir das Dektopfenster
    	pWnd->GetWindowRect(rec);  // hole mir die Aktuelle Auflösung
    	CDC pDC;  // Gerätekontext 
    	pDC.m_hDC = ::GetDC(NULL);  // API Aufruf mit dem ich mir das
                                // Desktop Handle hole.
    	pDC.TextOut(rec.Height()/2,rec.Width()/2,"hallo Thomas");
      // und schließlich schreibe ich den Text mit dem Dc
    


  • 1000 Dank, es funktioniert 😃

    Gibt es da noch ne Möglichkeit, dass ich den Schriftzug länger erscheinen lassen kann, oder muss ich das irgendwie mit nem Timer regeln!?

    Habe nämlich vor, das als Methode in einer Klasse zu packen und da geht das mit den Timern so blöd...

    mfg Perner



  • Klar kannst du das. Wird ja bei einem Fenster, Button, Pixel, Icon, etc,etc, etc,..... auch nicht anders gemacht. Jetzt solltest du es eigentlich schon Wissen.

    Wenn nicht:
    Windows zeichnet. Egal wohin. Drucker, Bildschirm und was es sonst noch alles gibt. Auf dem Drucker ist es klar. Hier bleibt ja alles stehen. Auf dem Bildschirm wird gezeichnet. Da siehst du die Schrift. Jetzt bewegst du etwas auf dem Bildschirm und schon zeichnet Windows neu. Was du (Windows hat deine Schrift )
    gezeichnet hast wird überzeichnet. Somit musst du neu zeichnen.

    Hier hatte ich dan auch aufgehört da es mit einer Schleife, Timer nicht so garn funktioniert. Windows zeichnet nicht den Desktop neu wenn sich ein Fenster bewegt sondern nur ein RECT. Somit kann sein das deine Ausgabe etwas komisch aussieht.


Anmelden zum Antworten