Zeichnen mit Cpp



  • Hallo,
    es geht darum, dass ich auf den Bildschirm (auch wenn andere Programme maximiert sind und meins minimiert und auch in andere Programme "hinein") Zeichnen will.
    Ich kenne jemanden der dies mit LineTo(); realisiert hat. Nach einer Recherche habe ich erfahren, dass das etwas mit MFC zu tun hat, welches aber leider veraltet ist.
    Ist das mit DirectX oder Opengl zu realisieren? Wenn ja, ist DirectX zukunfts"treuer" als wie OpenGl [fast alle modernen games funktionieren mit DirectX]. Oder gibt es andere Mittel?

    Danke schonmal,
    euer Listing 👍


  • Mod

    Mach Dich doch bitte erstmal klug wie Windows funktioniert.
    LineTo ist auch ein Befehl in der Win32 API und auch gewrappt in der MFC.

    In andere Programme kannst Du nicht zeichnen, wenn dieses programm auch auf die Idee kommt zu zeichnen. Dann ist Dein Zeug weg...
    Du kannst ein transparentes Fenster drüber legen und darin zeichnen, aber das wird schon schwieriger.

    Ich empfehle Dir erstmal Tutorials durchzuarbeiten bevor Du mit solchen erheblich schwierigeren Dingen anfängst, dait Du überhaupt verstehst wie Windows funktioniert.



  • Martin Richter schrieb:

    In andere Programme kannst Du nicht zeichnen, wenn dieses programm auch auf die Idee kommt zu zeichnen.

    Das ist egal, ich hooke die Zeichenfunktion einfach und zeiche dann einfach immer dadrüber, geht sowas mit GDI+?


  • Mod

    Listing schrieb:

    Martin Richter schrieb:

    In andere Programme kannst Du nicht zeichnen, wenn dieses programm auch auf die Idee kommt zu zeichnen.

    Das ist egal, ich hooke die Zeichenfunktion einfach und zeiche dann einfach immer dadrüber, geht sowas mit GDI+?

    Und wie willst Du die hooken? DLL in ale Prozesse injezieren und dann jedes Fenster subclassen das sichtbar ist und dann zeichen?

    Kannst Du mir erst mal erklären warum Du das willst und warum kein transparentes Fenster als Layer oben drüber langt?



  • Martin Richter schrieb:

    Kannst Du mir erst mal erklären warum Du das willst und warum kein transparentes Fenster als Layer oben drüber langt?

    Nen Transparentes Fenster könnte Ärger machen, weil es dann ja meine Tastatureingaben abfangen würde, oder irre ich mich da?



  • Das ist egal, ich hooke die Zeichenfunktion einfach und zeiche dann einfach immer dadrüber, geht sowas mit GDI+?

    Käse, geht nicht.

    Entweder du nimmst wiegesagt ein transparentes Fenster, oder bastelst dir ein Overlay mit DirectX. Hier im Forum war mal kürzlich ein Link dazu, hab ihn leider nicht mehr... Evtl. kann dir dabei einer weiterhelfen.

    MfG mikey.


  • Mod

    Listing schrieb:

    Nen Transparentes Fenster könnte Ärger machen, weil es dann ja meine Tastatureingaben abfangen würde, oder irre ich mich da?

    Da irrst Du Dich! Ein Fenster im Vordergrund heißt nicht, dass dieses Fenster den Focus hat. Selbst Mausklicks können als transparent durchgeleitet werden...

    Warum beantwortes Du nicht meine Frage was Du eigentlich vorhast?



  • Warum beantwortes Du nicht meine Frage was Du eigentlich vorhast?

    Die Frage hab ich wohl übersehen,
    Ich möchte eine Systemuhr machen, die auch aktiv ist, wenn man Spiele etc. startet, die immer oben rechts in der Ecke ist, ich werde das mit einem Transparentem Fenster dann mal probieren, vielleicht klappts ja wirklich ^^



  • Nope, brauchst du ein Overlay dazu! hat vielleicht jemand einen Link für ihn? Finde den Thread nicht mehr...



  • ka, falls ich diesen link gepostet hab wars sicher der:

    http://www.gamedev.net/community/forums/topic.asp?topic_id=359319



  • Ja genau, der war's! 😃 Also wiegesagt, das geht wunderbar mit Overlays. Ist zwar etwas komplizierter, aber ein Fortgeschrittener müsste das schon selber hinbekommen. Wollen wir mal hoffen, dass der Threadersteller einer ist 🤡



  • mikey schrieb:

    Ja genau, der war's! 😃 Also wiegesagt, das geht wunderbar mit Overlays. Ist zwar etwas komplizierter, aber ein Fortgeschrittener müsste das schon selber hinbekommen. Wollen wir mal hoffen, dass der Threadersteller einer ist 🤡

    Das ist ja echt krass,
    vielen dank.

    Keine Sorge ich arbeite mich da durch, das hat bis jetzt bei API-Hooking etc. auch immer geklappt, ich brauche einfach nur meine Zeit.
    Bei Google findet man ja alles was man wissen muss.

    Du hast mir echt gut den Weg gewiesen, wenn sich das Result sehen lässt kann ich das ja im forum posten 😃



  • Also was das Overlay bewirkt, siehst du ja an der Beispiel-Executable die dem Code beiliegt. Müsste das richtige für dich sein!

    Das ist ja echt krass

    Jop, in der Tat 👍

    MfG mikey.



  • Eins ist mir unklar:

    Wenn ich

    std::basic_string<TCHAR> str = _T("This is overlayed text");
    	SetTextColor(dc, RGB(255, 255, 255));
    	SetBkColor(dc, 0);
    	TextOut(dc, 5, 5, str.c_str(), str.length());
    

    durch

    MoveToEx(dc, 5, 5, NULL);
    	LineTo(dc, 200, 200);
    

    ersetze tut sich leider nichts, eigentlich sollte eine Linie gezeichnet werden


Anmelden zum Antworten