Métriques système à plusieurs moniteurs
La fonction GetSystemMetrics retourne des valeurs pour le moniteur principal, à l’exception des SM_CXMAXTRACK et SM_CYMAXTRACK, qui font référence à l’ensemble du bureau. Les métriques suivantes sont les mêmes pour tous les pilotes de périphérique : SM_CXCURSOR, SM_CYCURSOR, SM_CXICON, SMCYICON. Les fonctionnalités d’affichage suivantes sont les mêmes pour tous les moniteurs : LOGPIXELSX, LOGPIXELSY, DESTOPHORZRES, DESKTOPVERTRES.
GetSystemMetrics a également des constantes qui font référence uniquement à un système à plusieurs moniteurs. SM_XVIRTUALSCREEN et SM_YVIRTUALSCREEN identifient le coin supérieur gauche de l’écran virtuel, SM_CXVIRTUALSCREEN et SM_CYVIRTUALSCREEN sont les mesures verticales et horizontales de l’écran virtuel, SM_CMONITORS correspond au nombre de moniteurs attachés au bureau et SM_SAMEDISPLAYFORMAT indique si tous les moniteurs sur le bureau ont le même format de couleur.
Pour obtenir des informations sur un seul moniteur d’affichage ou sur tous les moniteurs d’affichage d’un bureau, utilisez EnumDisplayMonitors. Le rectangle de la fenêtre de bureau retournée par GetWindowRect ou GetClientRect est toujours égal au rectangle du moniteur principal, pour assurer la compatibilité avec les applications existantes. Ainsi, le résultat de
GetWindowRect(GetDesktopWindow(), &rc);
sera :
rc.left = 0;
rc.top = 0;
rc.right = GetSystemMetrics (SM_CXSCREEN);
rc.bottom = GetSystemMetrics (SM_CYSCREEN);
Pour modifier la zone de travail d’un moniteur, appelez SystemParametersInfo avec SPI_SETWORKAREA et pvParam pointant vers une structure RECT qui se trouve sur le moniteur souhaité. Si pvParam a la valeur NULL, la zone de travail du moniteur principal est modifiée. L’utilisation de SPI_GETWORKAREA retourne toujours la zone de travail du moniteur principal. Pour obtenir la zone de travail d’un moniteur autre que le moniteur principal, appelez GetMonitorInfo.