Gestion de deux configurations de moniteur
Une configuration à deux moniteurs génère la boîte de dialogue Gestionnaire multi-moniteur (TMM) temporaire. Si deux cibles font partie de la même carte graphique, TMM mappe la seule source actuellement mappée à l’une des cibles aux deux cibles. Une fois que TMM a effectué le mappage, la boîte de dialogue TMM s’affiche. Si les cibles se trouvent sur des cartes graphiques différentes, la boîte de dialogue TMM s’affiche sans activer le deuxième moniteur. Dans ce cas, la boîte de dialogue TMM n’a pas la possibilité de cloner ou d’étendre.
La séquence suivante montre l’ordre dans lequel TMM appelle les méthodes IViewHelper et effectue d’autres opérations dans cette situation :
TMM appelle la fonction EnumDisplayDevices pour récupérer la configuration d’affichage actuelle, qui inclut les adaptateurs, les affichages et les moniteurs. Pour plus d’informations sur EnumDisplayDevices, consultez la documentation Microsoft Windows SDK.
TMM compare la configuration d’affichage aux configurations d’affichage enregistrées précédemment.
Si la configuration d’affichage a un ou deux moniteurs avec des données EDID (Extended Display Information Data) que TMM n’a pas rencontrés auparavant, TMM continue à afficher la boîte de dialogue TMM.
Pour chaque adaptateur de la configuration d’affichage, TMM effectue des appels à la méthode IViewHelper ::GetConnectedIDs pour récupérer toutes les sources sur l’adaptateur, que les sources soient mappées ou non.
TMM effectue des appels à la méthode IViewHelper ::GetConnectedIDs pour récupérer toutes les cibles sur l’adaptateur, que les cibles soient mappées ou non. Chaque cible doit être connectée, mais n’a pas besoin d’être active.
Pour chaque source de la carte graphique, TMM effectue des appels à la méthode IViewHelper ::GetActiveTopology pour récupérer les cibles actives de la source.
TMM recherche la carte graphique qui a une source mappée à une cible. Cet identificateur de source est appelé « CloneSource ». Si l’adaptateur a deux cibles, TMM crée un tableau de deux entrées (ULONG targetArray[2]). TMM place l’identificateur cible existant comme premier élément et le deuxième identificateur cible comme deuxième élément.
TMM appelle la méthode IViewHelper ::SetActiveTopology(adapterName, CloneSource, 2, targetArray) avec les paramètres indiqués.
TMM appelle la méthode IViewHelper ::Commit .
Si un résultat d’erreur est retourné par l’une des méthodes IViewHelper , l’ordinateur n’entre pas dans la vue clone et la boîte de dialogue TMM s’affiche avec les options clone-view et external-only désactivées.
Si l’ordinateur entre en mode clone et que l’utilisateur choisit l’affichage étendu dans la boîte de dialogue TMM (et clique sur OK ou Appliquer), TMM doit désactiver la vue clone comme suit :
TMM appelle la méthode IViewHelper ::SetActiveTopology(adapterName, CloneSource, 1, targetArray) avec les paramètres indiqués.
TMM appelle la méthode IViewHelper ::Commit .
Dans l’appel SetActiveTopology précédent, le paramètre 3 est défini sur 1 et non sur 2. Dans ce cas, SetActiveTopology interprète targetArray comme un tableau avec un élément. SetActiveTopology désactive la deuxième cible et entre dans une vue unique. Ensuite, TMM utilise la fonction ChangeDisplaySettingsEx pour étendre l’affichage. Pour plus d’informations sur ChangeDisplaySettingsEx, consultez la documentation Microsoft Windows SDK.
La figure suivante montre le flux des opérations qui se produisent lorsque TMM gère la situation où un moniteur est ajouté pour effectuer une configuration à deux moniteurs.