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 nicht mehrere Monitore unterstützt, gibt dies Standardwerte aus GetSystemMetrics zurück, und die funktionen mehrerer Monitore funktionieren so, als ob nur eine Anzeige vorhanden ist. Auf mehreren Monitorsystemen funktioniert Ihre Anwendung normal.

Da negative Koordinaten in einem Multimonitorsystem problemlos 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, werden möglicherweise auf einem anderen Monitor angezeigt. Verwenden Sie diese Grenzwerte ebenfalls nicht, um ein Fenster sichtbar zu halten, da dadurch ein Fenster am primären Monitor angedockt werden kann. 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 für einen Monitor. Windows, das diese Grenzwerte verwendet, muss 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 MonitorFromWindow--Funktion verwenden.

Damit ein Bildschirmschoner auf allen Monitoren angezeigt wird, verknüpfen Sie den Link mit der neuesten Version von Scrnsave.lib. Andernfalls wird der Bildschirmschoner möglicherweise nur auf dem primären Monitor angezeigt und die anderen Monitore bleiben unberührt. Bildschirmschoner, die mit der neuesten Scrnsave.lib verknüpft sind, funktionieren sowohl auf einzelnen als auch auf mehreren Monitorsystemen. Um einen anderen Bildschirmschoner auf jedem Monitor zu verwenden, verwenden Sie die verschiedenen Monitorfunktionen, um jeden Monitor separat zu verarbeiten.

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, die in absoluten Koordinaten an den gesamten virtuellen Bildschirm gesendet werden, zuzuordnen, verwenden Sie die INPUT- Struktur mit MOUSEEVENTF_ABSOLUTE und MOUSEEVENTF_VIRTUALDESKTOP.

Die BitBlt Funktion eignet sich gut für mehrere Monitorsysteme. Die MaskBlt, PlgBlt, StretchBltund TransparentBlt Funktionen treten jedoch fehl, wenn sich der Kontext des Quell- und Zielgeräts unterscheidet.