Registriert: Mo Feb 24, 2003 18:19 Beiträge: 165 Wohnort: Cologne
Hallo,
ich möchte eine Form auf einem bestimmten Monitor erstellen, die mein programm vorher mit EnumDisplayDevices gefunden hat. Allerdings bieten die Delphi(5)-Forms mit DefaultMonitor nur sehr eingeschränkt dazu die Möglichkeit... Gibts da noch andere möglichkeiten?
Registriert: Mo Feb 24, 2003 18:19 Beiträge: 165 Wohnort: Cologne
hmmm... dann müsste ich ja bei bestimmten situationen mein programm raten lassen :/ nehmen wir mal im extremstfall an, jemand hat drei bildschirme, der primäre in der mitte, einen links, den anderen rechts - und schon stehe ich vor einem dilemma...
und für jede mögliche kombination der bildschirme regeln aufzustellen finde ich ein wenig unnütz.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Schau dir mal die API Funktion GetMonitorInfo oder das Boundsrect von TMonitor (Screen.Monitor[0]) an. Laut MSDN dürfen dort auch negative Werte vorkommen. Kann dir aber nicht sagen es was helfen könnte. Habe hier nur einen.
[edit] Ach ja. Ich denke mal auch, dass du nicht darumkommen wirst es selber zu positionieren. Aber wenn du sinnvolle Koordinaten abfragen kannst sollte es ja kein Thema sein.
Also ich hab bis jetzt nur Screen.Monitor[n] benutzt,
aber das geht recht gut.
Die Werte des Rect vom Monitor können negativ sein, halt immer dann wenn der zweite Monitor links von primär monitor ist.
Aber die Werte für Form.Left sind dann auch negativ wenn ein Fenster links vom Primären Monitor ist.
Von daher müßtest du nur Form.Left auf das Reft.Left vom Monitor setzen auf welchem du die Form anzeigen willst.
Registriert: Mo Feb 24, 2003 18:19 Beiträge: 165 Wohnort: Cologne
ahaaa.. jetzt hab ich die unit "MultiMon" gefunden.. kann schon hilfreich sein *hust*...
Dennoch, es wird wohl zwischen verfügbaren(EnumdisplayDevices) und vom Desktop benutzten(EnumDisplayMonitors) Monitoren unterschieden - warum auch immer, da man mit EnumDisplayDevices auch den Flag DISPLAY_DEVICE_ATTACHED_TO_DESKTOP benutzen kann, was mehr oder weniger das selbe bewirkt - nur das bei EnumDisplayMonitors noch das Rectangle bekomme - meine güte is das kompliziert :/
Da ich meine Anwendung auf besagtem Bildschirm im Vollbild laufen lassen möchte, sehe ich grad dass zu allem Überfluss die Funktion ChangeDisplaySettings auch noch die Option dmPosition anbietet, womit ich dem Anschein nach die Position eines sekundären Monitors einstellen kann - na danke (vorrausgesetzt dass ich alles richtig verstanden habe, keine garantie dafür, villeicht isset ja nur quark)
Jetzt habe ich folgende Fragen:
* Kann ich überhaupt einen sekundären Bildschirm benutzen, auch wenn dieser nicht Bestandteil vom desktop ist? wär schon praktisch, weil dann die maus nicht die grenze des einen bildschirms überschreitet aber irgendwie bezweifel ich das, ansonsten kann man ja den Mausbereich einschränken
* Mal angenommen, ich kann nur die vom desktop mitbenutzten bildschirme benutzen - in diesem Fall kann ich ja die Position des Bildschirmes herausfinden (bzw das rectangle), allerdings bin ich mir nicht sicher ob ich auch ohne probleme die auflösung ändern kann.
* gibts kein tutorial dazu ?! das meiste was ich bei google unter "EnumDisplayMonitors Delphi" finden kann ist irgendwie auf französisch
Keine ahnung ob ich das jetzt richtig verstanden hab, offensichtlich sind einige API-Befehle mehr low-level als andere.. ich werd mal meine augen weiterhin aufhalten und was rumprobieren.. ich meld mich dann falls ich was rausgefunden hab
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Flash hat geschrieben:
Wenn du mehr weißt, kannst du ja mal ein Tutorial schreiben: "OpenGL auf mehreren Monitoren"
Das wird sehr kurz. Das funktioniert problemlos sofern du nicht vor hast das Fenster so zu verschieben, dass es auf einer neuen Grafikkarte ankommt. Das geht nämlich nicht und wird es auch nie. Da müsste er nämlich dynamisch einen neuen Treiber laden und einen zweiten Context erstellen. Habe ich schon mal schmerzlich erfahren dürfen.
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.