SPI_WORKAREA für SystemParametersInfo und SM_CXSCREEN und SM_CYSCREEN für GetSysteMetrics.
Das Ergebnis ist bei beiden gleich.
SPI_GETWORKAREA ausgelesen mit SystemParametersInfo() gibt Dir die Koordinaten des Arbeitsbereiches als Rect des primären Bildschirms zurück.
SM_CXSCREEN und SM_CYSCREEN ausgelesen mit GetSysteMetrics() gibt Dir die Höhe bzw. Breite als Integer des primären Bildschirms an.
Die Werte unterscheiden sich demnach, wie die Einstellungen Deiner Taskbar sind.
Nehmen wir als Beispiel eine XP-Rechner mit
Standart-Taskleiste, welche unten fixiert ist an.
Wenn Du nun einen Bildschirm mit einer Auflösung von 1024x768 besitzt, dann gibt Dir SM_CYSCREEN = 768 zurück wärend bei Rect.Bottom (738) - Rect.Top (0) = 738 herauskommt.
Hast Du die Taskleiste oben fixiert, dann sieht das anderst aus:
CYSCREEN ist immer noch 768
Rect.Top ist nun nicht mehr 0, sondern 30 und Rect.Bottom wäre 768.
SPI_GETWORKAREA gibt Dir also Informationen über den verfügbaren Arbeitsbereich in Koordinaten und CYSCREEN und CXSCREEN jeweils nur Informationen über den Bildschirm.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.