Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Workarea verändern bei mehreren Bildschirmen (AppBar) (https://www.delphipraxis.net/110947-workarea-veraendern-bei-mehreren-bildschirmen-appbar.html)

DGS 27. Mär 2008 02:49


Workarea verändern bei mehreren Bildschirmen (AppBar)
 
Moi.

Ich baue eine eigene AppBar. Diese soll auf meinen zweiten Monitor Platz finden.

Das Problem:
Alles, was Workarea ändert bezieht sich auf die primäranzeige.
Wie kann man es bei einem anderen Monitor einstellen?

Besonders mit
Delphi-Quellcode:
SystemParametersInfo(SPI_SETWORKAREA , 0, @r, 0);
geht es nicht, da mir irgendwie die Ansteurung der Anzeige fehlt.

Leider ist
Delphi-Quellcode:
Screen.Monitors[1].WorkAreaRect
Read-Only. Setzen kann ich den Wert nicht.

Gibt es was, um auf den Zweitmonitor zuzugreifen?
( nutze Delphi 6 )

toms 27. Mär 2008 04:59

Re: Workarea verändern bei mehreren Bildschirmen (AppBar)
 
Hallo,

Zitat:

Zitat von msdn
To change the work area of a monitor, call SystemParametersInfo with SPI_SETWORKAREA and pvParam pointing to a RECT structure that is on the desired monitor. If pvParam is NULL, the work area of the primary monitor is modified. Using SPI_GETWORKAREA always returns the work area of the primary monitor. To get the work area of a monitor other than the primary monitor, call GetMonitorInfo.


DGS 27. Mär 2008 12:24

Re: Workarea verändern bei mehreren Bildschirmen (AppBar)
 
Hab zwar immernoch nicht verstanden wie der die monitore dabei unterscheiden soll, werds aber versuchen.

Was mich halt störrt: im RECT speichert man ja nur die Grösse der Workarea, nicht auf welchem Bildschirm diese liegen soll.

*edit:
OK, scheinbar findet Windows dann selbstständig raus welche Anzeige gemeint ist und setzt die Workarea richtig.

Hat sich damit erledigt.

Muetze1 27. Mär 2008 13:09

Re: Workarea verändern bei mehreren Bildschirmen (AppBar)
 
Zitat:

Zitat von DGS
*edit:
OK, scheinbar findet Windows dann selbstständig raus welche Anzeige gemeint ist und setzt die Workarea richtig.

Hat sich damit erledigt.

Hat Tom doch genau richtig zitiert und die MSDN schreibt es doch auch eindeutig:
MSDN von Tom
To change the work area of a monitor, call SystemParametersInfo with SPI_SETWORKAREA and pvParam pointing to a RECT structure that is on the desired monitor.

DGS 27. Mär 2008 13:23

Re: Workarea verändern bei mehreren Bildschirmen (AppBar)
 
Ich wusste halt nicht dass Windows selbst rausfindet, welcher Monitor gemeint ist.

Also erst schaut der Anhand der Koordinaten nach, welche Anzeige gemeint ist und ändert dann nur für diese den Workarea, ohne die Workarea der anderen Anzeige zu beeinflußen.

ich frag mich nur was passieren würde, wenn man ein RECT so wählt, dass der über beide Bildschirme sich erstreckt.

Muetze1 27. Mär 2008 13:46

Re: Workarea verändern bei mehreren Bildschirmen (AppBar)
 
Zwei Möglichkeiten:

1. er gibt einen Fehler zurück (invalid parameter o.ä.)
2. er wendet das jeweilige Rechteck auf den Monitor an, auf dem der grösste Teil des Rechtecks liegt (wie bei der Funktion zur Ermittlung des Monitors auf dem das Fenster liegt. Er meldet immer den Monitor mit dem grössten Fensterteil. Sieht man auch gut in der Taskleiste, wann er wechselt).

Am besten wäre es einfach mal das ganze aus zu probieren.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz