Also die Lösung dafür ist schon allein darum hässlich, weil du mit "Maus nach oben rechts werfen" nicht mehr das X in der Titelleiste triffst. Das tötet den Durchschnittsuser, weil der die Maus nicht mehr findet und außerdem weiß er nicht, woher das Problem kommt. Tu es nicht.
Doch dafür habe ich eignebaut, dass die Maus an die korrekte Stelle "teleportiert" wird, wenn er den bereich des Fensters mit der Maus verlässt. Die Maus-Verwirrung bekomme ich also in den Griff.
Ich würde wahrscheinlich benutzerdefinierte Timings vorschlagen, die einfach die Auflösung in beide Richtungen halbieren. Wenn man das geschickt macht, dann kann das jeder Monitor darstellen (z.B. 1920x1080 wird zu 960x540 bei identischem Timing). Allerdings ist das wieder ein Rumgepfusche am Grafiktreiber, setzt Adminrechte voraus und ist für den normalen Benutzer nicht machbar...
Problem ist, dass ja nur einzelne Fenster skaliert werden sollen und nicht die komplette Anzeige.
Ansonsten gibt es für mich nur zwei Möglichkeiten, den Desktop zu erweitern... (a) mehrere Bildschirme an einer Grafikkarte (b) mehrere Bildschirme an mehreren Grafikkarten.
Naja ich kann demjenigen der mein Programm nutzen will nicht sagen: "Bitte kauf dir noch einen weiteren Bildschirm, aber schalte ihn nicht an, weil du sollst nicht sehen was mein Programm da für Sachen macht."
Jetzt habe ich beim Spielen mit der Windows Bildschirmlupe auf "Speichern" geklickt und den Post abgesendet. Dabei wollte ich nur vorschlagen die auch mal anzugucken (insbesondere API-Imports für Inspiration )
Naja für die Bildschirmlupe braucht man ja nicht viel mehr als StretchBlt o.ä. Man kann ja nur "gucken" und kann die vergrößerten Teile ja nicht bedienen. (Man hat ja schon die Lupe "in der Hand" ^^)
Ich wollte auch die DWM-Funktionen für die Darstellung vorschlagen (statt StretchBlt), aber das ist ja auch nicht das wirkliche Problem.
Jo könnte ich mir mal anschauen, aber das ist ja wie gesagt eher nebensächlich und kein wirkliches Problem.
Eine Idee zur Positionierung des Original-Fensters: Die vergrößerte Variante ist ja immer größer als das Original. Vielleicht kann man das dann einfach dahinter verstecken. Dann müsste es immer auf dem Desktop sein. Sieht aber optisch vielleicht nicht bei jeder Software schön aus (insbesondere welche, die immer im Vordergrund sein will)
Ansonsten würde ich auch überprüfen, ob das wirklich ein Problem ist, wenn du das Fenster einfach ganz nach rechts unten verschiebst. Die Messages musst du ja eh via SendMessage schicken, die kommen ja gar nicht mehr direkt von der Maus.
Du scheinst mein Prinzip nicht 100%ig verstanden zu haben. Die Weiterleitung von Messages an das Originalfenster fällt weg, weil es unter anderem eben auch Controls gibt die keine Handles besitzen. Um mal 1 Hürde genannt zu haben...
Momentan ist es also so, dass der benutzer TATSÄCHLICH das Originalfenster bedient. Mit seinen original Maus- und Tastatureingaben. Alles was ich mache ist momentan, dass mein Programm die ganze "Szene" vergrößert darstellt. Und zwar inklusive Mauszeiger. D.h. wenn der Benutzer jetzt auf mein "Video" guckt, dann sieht es (nur) so aus, als würde er eine größere Version davon bedienen. Aber das reicht ja auch aus. Und jegliche Verwirrungen bzgl der Maus (die ja in Wirklichkeit nicht da ist, wo mein Programm es vortäuscht) werden durch ein paar Abfragen und "Tricks" verhindert.
(wobei ich in meiner aktuellen Demo nur grob einige Sachen abfange.. Ist ja nur zum Testen und wäre auch nicht mein Hauptproblem).
Im Klartext heißt das: Ich kann mein Original-Fenster nicht unter meinem skalierten verstecken, weils dann nicht mehr funktioniert.... (weswegen das halt z.B. auch alles etwas hässlich ist -.-)