Più metriche di sistema di monitoraggio

La funzione GetSystemMetrics restituisce valori per il monitoraggio primario, ad eccezione di SM_CXMAXTRACK e SM_CYMAXTRACK, che fanno riferimento all'intero desktop. Le metriche seguenti sono le stesse per tutti i driver di dispositivo: SM_CXCURSOR, SM_CYCURSOR, SM_CXICON, SMCYICON. Le funzionalità di visualizzazione seguenti sono le stesse per tutti i monitor: LOGPIXELSX, LOGPIXELSY, DESTOPHORZRES, DESKTOPVERTRES.

GetSystemMetrics include anche costanti che fanno riferimento solo a un sistema di monitoraggio multiplo. SM_XVIRTUALSCREEN e SM_YVIRTUALSCREEN identificare l'angolo superiore sinistro dello schermo virtuale, SM_CXVIRTUALSCREEN e SM_CYVIRTUALSCREEN sono le misurazioni verticali e orizzontali dello schermo virtuale, SM_CMONITORS è il numero di monitor collegati al desktop e SM_SAMEDISPLAYFORMAT indica se tutti i monitor sul desktop hanno lo stesso formato di colore.

Per ottenere informazioni su un singolo monitor di visualizzazione o su tutti i monitor di visualizzazione in un desktop, usare EnumDisplayMonitors. Il rettangolo della finestra desktop restituito da GetWindowRect o GetClientRect è sempre uguale al rettangolo del monitoraggio primario, per garantire la compatibilità con le applicazioni esistenti. Di conseguenza, il risultato di

GetWindowRect(GetDesktopWindow(), &rc);

sarà:

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

Per modificare l'area di lavoro di un monitor, chiamare SystemParametersInfo con SPI_SETWORKAREA e pvParam che punta a una struttura RECT presente nel monitor desiderato. Se pvParam è NULL, l'area di lavoro del monitoraggio primario viene modificata. L'uso di SPI_GETWORKAREA restituisce sempre l'area di lavoro del monitoraggio primario. Per ottenere l'area di lavoro di un monitor diverso dal monitoraggio primario, chiamare GetMonitorInfo.