Freigeben über


Mehrere Monitoranwendungen auf verschiedenen Systemen

Damit Ihre mehrfache Monitoraware-Anwendung sowohl auf Systemen mit als auch ohne unterstützung mehrerer Monitore funktioniert, verknüpfen Sie Ihre Anwendung mit Multimon.h. Sie müssen auch COMPILE_MULTIMON_STUBS in genau einer C-Datei definieren. Wenn das System mehrere Monitore nicht unterstützt, gibt dies Standardwerte aus GetSystemMetrics zurück, und die mehreren Monitorfunktionen funktionieren so, als ob nur eine Anzeige vorhanden ist. Auf mehreren Monitorsystemen funktioniert Ihre Anwendung normalerweise.

Da negative Koordinaten einfach in einem Multimonitorsystem auftreten können, sollten Sie Koordinaten abrufen, die in lParam verpackt sind, indem Sie die GET_X_LPARAM und GET_Y_LPARAM Makros verwenden.

Verwenden Sie keine negativen Koordinaten oder Koordinaten, die größer als SM_CXSCREEN sind, und SM_CYSCREEN, um ein Fenster auszublenden. Windows, die diese Grenzwerte zum Ausblenden verwenden, können auf einem anderen Monitor angezeigt werden. Verwenden Sie diese Grenzwerte auch nicht, um ein Fenster sichtbar zu halten, da dies dazu führen kann, dass ein Fenster an den primären Monitor angedockt wird. Es empfiehlt sich, vorhandene Anwendungen für diese Probleme erneut zu überprüfen. Sie können jedoch Probleme in vorhandenen Anwendungen minimieren, indem Sie die Anwendung auf dem primären Monitor ausführen oder den primären Monitor in der oberen linken Ecke des virtuellen Bildschirms beibehalten.

Beachten Sie, dass SM_CXMAXTRACK und SM_CYMAXTRACK für den Desktop definiert sind, nicht nur einen Monitor. Windows diese Grenzwerte verwenden, müssen möglicherweise neu definiert werden.

Ein übergeordnetes oder verwandtes Fenster befindet sich möglicherweise nicht auf demselben Monitor wie ein untergeordnetes Fenster. Um den Monitor eines Fensters zu finden, sollten Anwendungen die Funktion MonitorFromWindow verwenden.

Wenn ein Bildschirmschoner auf allen Monitoren angezeigt werden soll, verknüpfen Sie mit der neuesten Version von Scrnsave.lib. Andernfalls kann der Bildschirmschoner nur auf dem primären Monitor angezeigt werden und die anderen Monitore unberührt lassen. Bildschirmschoner, die mit den neuesten Scrnsave.lib verknüpft sind, funktionieren sowohl auf einzelnen als auch auf mehreren Monitorsystemen. Um einen anderen Bildschirmschoner auf jedem Monitor zu haben, verwenden Sie die mehreren Monitorfunktionen, um jeden Monitor separat zu behandeln.

Eingabegeräte, die Koordinaten an das System in absoluten Koordinaten liefern, z. B. Tablets, haben ihre Cursoreingabe auf den primären Monitor beschränkt. Informationen zum Wechseln der Tablet-Eingabe zwischen Monitoren finden Sie in den Anweisungen des OEM.

Um Mauseingaben zuzuordnen, die in absoluten Koordinaten an den gesamten virtuellen Bildschirm gesendet werden, verwenden Sie die EINGABEstruktur mit MOUSEEVENTF_ABSOLUTE und MOUSEEVENTF_VIRTUALDESKTOP.

Die BitBlt-Funktion eignet sich gut für mehrere Monitorsysteme. Die Funktionen MaskBlt, PlgBlt, StretchBlt und TransparentBlt schlagen jedoch fehl, wenn sich die Quell- und Zielgerätekontexte unterscheiden.