Fensterposition abhängig von Bildschirmbreite
-
Ich arbeite mit zwei Monitoren (Windows-Desktop erweitert) und möchte mein Prog auf dem 2. Monitor öffnen. Dazu gebe ich als left einfach den Wert 1035 ein und alles ist ok.
Öffne ich jetzt mein Programm jedoch auf einem PC mit nur einem Bildschirm, ist es nicht in den Bildbereich zu bekommen. Gibt es da ne Standardlösung oder, an was ich in meiner Unwissenheit gedacht hab, wie frage ich die Bildschirmbreite des Monitors ab, um meine Left-Angabe ggf. anzupassen?
Kleiner Zusatz: Ich arbeite mit Borland.
-
Du kannst mit GetSystemMetrics() die Bildschirmauflösung abfragen.
-
Jetzt kriege ich aber leider nur die von dem Primärbildschirm, nicht die Breite, die ich auf dem Desktop zur Verfügung hab...
-
Hoi
,Guckst du hier
EnumDisplayMonitors
MonitorEnumProc
MonitorFromWindow
MonitorFromPointVlt. ist das noch hilfreich: Fenster zentrieren
-
Hm, ich sehe, ich müsste mich erst tiefer in die Windows-Funktionen einarbeiten, um da durch zu blicken. Gibts keine einfach Abfrage, wie breit mein Desktop ist?
-
GetSystemMetrics, aber nur für den Prim. Mon.
.
-
Wie sieht das denn mit einem Menüpunkt in dem PopUpMenü aus, was per Rechtsklick auf das Windows Taskleistensymbol des Programms aufgerufen wird (ich glaub, das gleiche, wie unter dem Icon oben links), kann ich da einen Punkt einfügen, der ein Verschieben auf den ersten Bildschirm erzeugt?
Will ja nur verhindern, dass das Programm unbrauchbar wird, wenn der 2. Monitor ausfällt...Müsste ich nicht nach dem Öffnen eines Formulars mit der Funktion auf die Abmessungen des Monitors zugreifen, auf dem das Prog geöffnet ist?
-
Der Menüpunkt "verschieben" ist im Systemmenü und im besagten Popup-Menü schon drin. Er wird aktiviert, sobald das Fenster nicht maximiert (den gesamten Bildschirm ausfüllend) dargestellt wird.
-
Der wird zum Beipiel bei mir nur hinter dem Icon angezeigt, nicht aber hinter dem Taskleistensymbol.
-
Hilft Dir auch nicht, weil der Verschiebecursor innerhalb des Primärbildschirmes bleibt.
Die Frage ist erstmal, auf welcher Seite des Monitors Dein Bild versteckt ist.
Du kannst Deine Positionsangabe auch auf den rechten Rand des Bildschirmes beziehen.
-
Aber wenn der rechte Rand des Bildschirmes der Rand des primären Bildschirmes ist, bringt mich das auch nicht weiter...
Sonst: Syntax?Screen->CountMonitors; Da ham wa doch was
