Sì.
Pplu si chiede perché i programmi vengano eseguiti più lentamente quando il sistema è in esecuzione con più monitor .
Bene, per prima cosa, ovviamente, quando hai più di un monitor, ci sono più cose sullo schermo che il sistema può tenere traccia. È la stessa ragione per cui i programmi vengono eseguiti più lentamente su un monitor di grandi dimensioni rispetto a un monitor di piccole dimensioni.
E se c'è solo un monitor, allora funziona come MonitorFromPoint
diventare banale se la bandiera è qualcosa del genere
MONITOR_DEFAULTTONEAREST
, perché quando c'è un solo monitor, rispondendo a domande come "Qual è il monitor più vicino a questo punto"? diventa molto facile.
Se i due monitor non hanno le stesse dimensioni, l'unione dei due monitor non sarà rettangolare, il che rende più complicato il ritaglio rispetto all'unione di tutti i monitor.
Ma sospetto che si verifichi la grande penalità per più monitor se commetti l'errore di impostare i tuoi monitor su diversi formati di colore, ad esempio se imposti un monitor sul formato 565 e ne imposti un altro su 24 bpp.
Se i due monitor non usano lo stesso formato di colore, i programmi saranno costretti a utilizzare DIB invece di DDB per bitmap dello schermo, nel caso in cui una finestra venga spostata in una finestra con un diverso formato di colore (o peggio, viene posizionata in modo che si trovi a cavallo due monitor con diversi formati di colore). In linea di principio, i programmi devono utilizzare solo il DIB "nel caso peggiore"; ad esempio, se un monitor è 555 e l'altro è 565, sarà sufficiente un DIB 565. In pratica, tuttavia, la maggior parte dei programmi si limita a ricorrere a un DIB 24bpp o 32bpp di fronte a monitor con formati di colore diversi.
(Si chiede se tutti i monitor hanno lo stesso formato di colore chiamando
GetSystemMetrics(SM_SAMEDISPLAYFORMAT)
.)
Poiché una conversione di formato ha luogo quando un DIB viene inviato a un dispositivo con un formato di colore diverso, forzare un programma a conservare le sue bitmap come DIB significa che per almeno uno dei monitor (e probabilmente entrambi), subirai una conversione di formato quando quel DIB viene disegnato sullo schermo. Ci sono anche alcune ottimizzazioni varie che sono disabilitate quando non tutti i monitor usano lo stesso formato di colore perché il costo dell'utilizzo dei DIB supera i risparmi derivanti dall'ottimizzazione.
Quindi, se non lo hai già fatto, vai nelle impostazioni dello schermo e verifica di aver impostato tutti i monitor sulla stessa profondità di colore. In caso contrario, si perde una grande classe di ottimizzazioni grafiche.