Plusieurs applications monitor sur différents systèmes
Pour que votre application monitoraware fonctionne à la fois sur des systèmes avec et sans prise en charge de moniteur multiple, lier votre application à Multimon.h. Vous devez également définir COMPILE_MULTIMON_STUBS dans un fichier C exactement. Si le système ne prend pas en charge plusieurs moniteurs, cela retourne les valeurs par défaut de GetSystemMetrics et les fonctions de moniteur multiples agissent comme s’il n’y a qu’un seul affichage. Sur plusieurs systèmes de surveillance, votre application fonctionne normalement.
Étant donné que les coordonnées négatives peuvent se produire facilement dans un système multimonitor, vous devez récupérer les coordonnées qui sont empaquetées dans l’environnement lParam à l’aide des macros GET_X_LPARAM et GET_Y_LPARAM .
N’utilisez pas de coordonnées négatives ou de coordonnées supérieures à SM_CXSCREEN et SM_CYSCREEN pour masquer une fenêtre. Windows qui utilisent ces limites pour masquer peut apparaître sur un autre moniteur. De même, n’utilisez pas ces limites pour conserver une fenêtre visible, car cela peut entraîner l’alignement d’une fenêtre sur le moniteur principal. Il est préférable de réexaminer les applications existantes pour ces problèmes. Toutefois, vous pouvez réduire les problèmes dans les applications existantes en exécutant l’application sur le moniteur principal ou en conservant le moniteur principal dans le coin supérieur gauche de l’écran virtuel.
Notez que les SM_CXMAXTRACK et les SM_CYMAXTRACK sont définis pour le bureau, pas seulement un seul moniteur. Windows l’utilisation de ces limites peut avoir besoin d’être redéfinie.
Une fenêtre parente ou associée peut ne pas se trouver sur le même moniteur qu’une fenêtre enfant. Pour localiser le moniteur d’une fenêtre, les applications doivent utiliser la fonction MonitorFromWindow .
Pour afficher un écran d’enregistrement sur tous les moniteurs, lien avec la dernière version de Scrnsave.lib. Sinon, l’économiseur d’écran peut apparaître uniquement sur le moniteur principal et laisser les autres moniteurs non touchés. Les enregistreurs d’écran liés au dernier Scrnsave.lib fonctionneront sur des systèmes de moniteur uniques et multiples. Pour avoir un autre économiseur d’écran sur chaque moniteur, utilisez les fonctions de moniteur multiples pour gérer chaque moniteur séparément.
Les appareils d’entrée qui fournissent des coordonnées au système en coordonnées absolues, telles que les tablettes, ont leur entrée de curseur limitée au moniteur principal. Pour basculer l’entrée de tablette entre les moniteurs, consultez les instructions de l’OEM.
Pour mapper l’entrée de la souris envoyée en coordonnées absolues à l’écran virtuel entier, utilisez la structure INPUT avec MOUSEEVENTF_ABSOLUTE et MOUSEEVENTF_VIRTUALDESKTOP.
La fonction BitBlt fonctionne bien pour plusieurs systèmes de moniteur. Toutefois, les fonctions MaskBlt, PlgBlt, StretchBlt et TransparentBlt échouent si les contextes d’appareil source et de destination sont différents.