Freigeben über


Systemmetriken für mehrere Monitore

Die GetSystemMetrics-Funktion gibt Werte für den primären Monitor zurück, mit Ausnahme von SM_CXMAXTRACK und SM_CYMAXTRACK, die auf den gesamten Desktop verweisen. Die folgenden Metriken sind für alle Gerätetreiber identisch: SM_CXCURSOR, SM_CYCURSOR, SM_CXICON, SMCYICON. Die folgenden Anzeigefunktionen sind für alle Monitore identisch: LOGPIXELSX, LOGPIXELSY, DESTOPHORZRES, DESKTOPVERTRES.

GetSystemMetrics verfügt auch über Konstanten, die sich nur auf ein System mit mehreren Monitoren beziehen. SM_XVIRTUALSCREEN und SM_YVIRTUALSCREEN die obere linke Ecke des virtuellen Bildschirms identifizieren, SM_CXVIRTUALSCREEN und SM_CYVIRTUALSCREEN sind die vertikalen und horizontalen Abmessungen des virtuellen Bildschirms, SM_CMONITORS die Anzahl der monitore, die an den Desktop angefügt sind, und SM_SAMEDISPLAYFORMAT gibt an, ob alle Monitore auf dem Desktop das gleiche Farbformat haben.

Verwenden Sie EnumDisplayMonitors, um Informationen zu einem einzelnen Anzeigemonitor oder allen Anzeigemonitoren auf einem Desktop abzurufen. Das Rechteck des Desktopfensters, das von GetWindowRect oder GetClientRect zurückgegeben wird, ist aus Gründen der Kompatibilität mit vorhandenen Anwendungen immer gleich dem Rechteck des primären Monitors. So ist das Ergebnis von

GetWindowRect(GetDesktopWindow(), &rc);

wird sein:

rc.left = 0; 
rc.top = 0; 
rc.right = GetSystemMetrics (SM_CXSCREEN); 
rc.bottom = GetSystemMetrics (SM_CYSCREEN);

Um den Arbeitsbereich eines Monitors zu ändern, rufen Sie SystemParametersInfo mit SPI_SETWORKAREA und pvParam auf eine RECT-Struktur auf, die sich auf dem gewünschten Monitor befindet. Wenn pvParamNULL ist, wird der Arbeitsbereich des primären Monitors geändert. Die Verwendung von SPI_GETWORKAREA gibt immer den Arbeitsbereich des primären Monitors zurück. Rufen Sie GetMonitorInfo auf, um den Arbeitsbereich eines anderen Monitors als dem primären Monitor abzurufen.