Mehrere Bildschirme und CenterPos

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
olaf870
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 128
Registriert: Mi, 26. Okt 2005 18:41
Wohnort: Berlin
Kontaktdaten:

Mehrere Bildschirme und CenterPos

Beitrag von olaf870 »

Wenn merere Bildschrime an einer Grafikkarte angeschlossen sind, entsteht das Problem, dass sich mit Xbase-Bordmitteln ein Fenster nicht mehr so richtig zentrieren lässt. Als Grundlage für die Berechnung der Mittenposition nimmt Xbase++ stets wohl immer den ersten Bildschirm, auch wenn man das "Root-Window" der Anwendung auf dem 2.ten oder 3.ten Bildschirm positioniert ist. So entsteht dann der Effekt, dass man darauf wartet, dass das Programm endlich mal weitermacht, dann schlieslich mit Ctrl-Alt-Del das Programm abbricht, weil man nicht merkt dass zwei Bildschirme und einundhalb Meter weiter links ein kleiner Dialog aufgepoppt ist und auf Eingaben wartet. Hat da schon mal jemand eine Lösung gefunden (ohne dass man alle Dialoge neu anfassen muss) oder ist das Problem bisher nicht aufgetreten.
Grüße
Olaf870
Grüße
Olaf870
http://combifinanz.de
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Re: Mehrere Bildschirme und CenterPos

Beitrag von Lewi »

Moin Olaf,
dieses Problem kenne ich.

Ich habe meine Dialog-Klasse um 2 Methoden erweitert, die beim Schliessen eines Dialoges die Position des Fensters abspeichert (Ini-Datei, mit Dialog-Klassennahmen, xy-Position, Desktop-Größe) und beim nächsten Aufruf die letzte Position für die Darstellung heranzieht.
Diese Datei wird in einem User-Verzeichnis abgelegt. Falls der User an einem anderen Arbeitsplatz sitzt, an dem keine 2 Bildschirme vorhanden sind und die Koordinaten nicht zur Desktop-Größe passen, wird der Dialog dann wieder zentriert.

Viele Grüße
Olaf
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Mehrere Bildschirme und CenterPos

Beitrag von Herbert »

Habe zu diesem Thema eine Frage:
Wenn ich mehrere Bildschirme habe, kann der Hauptbildschirm mit der Koordinate 0,0 links unten irgendeiner dieser Bildschirme sein. Ein Bildschirm links davon liefert mir negative X-Koordinaten, rechts daveon entsprechend grosse X-Koordinaten.
Gibt es eine Möglichkeit, den sichtbaren Bereich abfragen zu können?
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Mehrere Bildschirme und CenterPos

Beitrag von Jan »

SetAppWindow():currentSize()

Ich weiß aber nicht, ob das auf beide Bildschirme geht oder nur den aktuellen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9368
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Mehrere Bildschirme und CenterPos

Beitrag von Tom »

SetAppWindow():currentSize()
liefert die Größe des AppWindows zurück. Wenn schon, dann AppDeskTop():CurrentSize, aber auch das bringt nix.

Mittel der Wahl ist die API-Funktion SystemParametersInfoA. Mit dem Parameter SPI_GETWORKAREA (48) beispielsweise liefert sie (in einem per Referenz übergebenen Puffer) die nutzbare Größe (bzw. die Koordinaten) des Bildschirms oder aller Bildschirme. Allerdings muss man die Puffervariable auseinanderfrickeln, um die Koordinaten zu erhalten. Die Stellen 1 bis 4 liefern links oben, 5 bis 8 rechts oben, 9 bis 12 links unten, 13 bis 16 rechts unten. Auf die muss man dann Bin2U() anwenden, um numerische Werte zu erhalten.
Herzlich,
Tom
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Mehrere Bildschirme und CenterPos

Beitrag von Jan »

Tom,

in einem hast Du Recht: SetAppWindow() ist natürlich falsch. Da waren die Finger zu schnell, und haben ein Set zu viel getippt.

Aber auf meinem Rechner gibt AppDeskTop():currentSize() exakt die Bildschirmgröße wieder. Da brauch ich keinerlei API-Verrenkungen zu machen.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9368
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Mehrere Bildschirme und CenterPos

Beitrag von Tom »

Die genannte API-Funktion liefert - je nach Parameter - unterschiedliche Informationen, und in der gezeigten Variante den nutzbaren Bereich (also ohne Taskbar usw.). Das ist keine "Verrenkung", sondern eine ziemlich wichtige Info, wenn man eben nicht die verfügbare Bildschirmgröße, sondern den Arbeitsbereich zu füllen versucht. Wenn Du eine Anwendung bauen willst, die immer den Arbeitsbereich füllen soll, scheiterst Du mit AppDeskTop():CurrentSize().
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Mehrere Bildschirme und CenterPos

Beitrag von brandelh »

Hi,

ich habe nur einen Monitor angeschlossen, daher die Frage (ich kann es nicht selbst probieren).

Angenommen ich habe 2 Monitore mit 1280x1024, liefert dann AppDestop() 2560x1024 ?
Und was passiert, wenn beide Monitor unterschiedlich groß sind, bzw. einer quer und der andere 90° verdreht ist ?
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Mehrere Bildschirme und CenterPos

Beitrag von Martin Altmann »

Moin,
AppDesktop geht immer nur auf den ersten Monitor!
Genau die von Dir gewünschte Konstellation habe ich hier im Büro. Es wird immer nur 1280x1024 angezeigt.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9368
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Mehrere Bildschirme und CenterPos

Beitrag von Tom »

AppDesktop geht immer nur auf den ersten Monitor!
So isses. SystemParametersInfoA liefert mit den richtigen Parametern aber alle gewünschten Infos.
Herzlich,
Tom
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Mehrere Bildschirme und CenterPos

Beitrag von Herbert »

Danke Tom, werde mal "U2Bin-len"

Und an die anderen Herren: Glaubt ihr mir nicht, wenn ich schreibe, dass die "linke"seite des 1. Monitors negative Werte liefert und die rechte entsprechend Höhere? #-o
Von daher kriegt man auch keine Infos über eventuelle Unterschiede in der Auflösung.
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Mehrere Bildschirme und CenterPos

Beitrag von Martin Altmann »

Herbert,
was heißt nicht glauben?
Hubert wollte wissen, wie das Ergebnis von AppDesktop():CurentSize() ist, wenn man zwei Bildschirme hat, die unterschiedlich ausgerichtet sind.
Den Gefallen habe ich ihm getan und seine Frage beantwortet - da ist kein Wert negativ, warum auch.
Du hast ja nach was anderem gefragt.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Mehrere Bildschirme und CenterPos

Beitrag von brandelh »

Hi,

wenn ich ein Fenster unsichtbar aufbauen will, kann ich das entweder HIDDEN tun, oder ich lasse es an Position -1000, -1000 aufbauen.
Ein kurzes setPos() und es ist sofort da ! Negative Werte können also auch nützlich sein ;-)
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9368
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Mehrere Bildschirme und CenterPos

Beitrag von Tom »

Hallo, Hubert.

Zustimmung. Ich nutze ein Bildbearbeitungscontrol (ActiveX), das leider immer - und auch nicht abschaltbar - eine Toolbar anzeigt. Immerhin aber kann man sie positionieren (nur eben nicht verstecken). Also landet sie einfach im "negativen Bereich", feddisch.
Herzlich,
Tom
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Mehrere Bildschirme und CenterPos

Beitrag von Martin Altmann »

Yupp.
Aber die Größe des Desktops wird nicht negativ sein 8)

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Mehrere Bildschirme und CenterPos

Beitrag von brandelh »

Hallo Martin,

noch nicht, aber wenn der erste Monitor mehr als die 2 Milliarden positiven Punkte bei einer LONG benötigt, hat Xbase ein Problem ... 8)
Gruß
Hubert
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Mehrere Bildschirme und CenterPos

Beitrag von Herbert »

Martin Altmann hat geschrieben:Yupp.
Aber die Größe des Desktops wird nicht negativ sein 8)
Die Grösse nicht, aber die Koordinaten. Ein 2. Bildschirm links des Hauptbildschirms hat negative Positionen! Also aufgepasst mit Pseudofenstern im negativen Bereich.
Grüsse Herbert
Immer in Bewegung...
Antworten