Sto tentando di elaborare se il modulo completo è visibile sullo schermo. Per chiarire questo: non mi interessa se la forma è parzialmente o completamente nascosta da un'altra forma, voglio solo sapere se il modulo è completamente sullo schermo.Verifica se il modulo è limitato a tutte le schermate
In Windows è possibile spostare le forme in giro, in modo tale che essi sono nascosti a metà strada. Questo perché è possibile spostarli oltre i limiti effettivi di qualsiasi monitor. (Più a sinistra, a destra o in basso.) Come posso verificare se questo è il caso in un modo semplice?
Quello che ho capito che potevo fare è quello di verificare se il modulo è in limiti della SystemInformation.VirtualScreen
. Il problema qui è che non tutti i pixel dello schermo virtuale sono effettivamente visibili. Naturalmente questo funzionerebbe se SystemInformation.MonitorCount = 1
Ancora io non sono molto contento di questo.
Ok, devo solo costruire un esempio oscuro qui. Immagina tre monitor allineati uno accanto all'altra, ciascuno largo 800 px. I monitor 1 e 3 sono alti 600 px, il monitor 2 (quello centrale) è alto 400 px. Lo spazio virtuale dello schermo sarebbe 1800px * 600px. Se il monitor 2 fosse allineato sulla parte superiore degli altri monitor, allora ci sarebbe 200 px sul fondo dello spazio virtuale dello schermo che non sarebbe visibile. Ora potrei estendere una finestra dal monitor 1 al monitor 3 e l'intero modulo non sarebbe visibile, il fondo sarebbe perso sul monitor 2. –
Bene, avrai bisogno di scrivere molto più codice per gestire un caso del genere. Buona fortuna con esso. –
Lo so, era solo un esempio molto costruito. Spero che non arriverà mai a quello. –