Control de dos configuraciones de monitor
Una configuración de dos monitores genera el cuadro de diálogo Administrador de varios monitores transitorios (TMM). Si dos destinos forman parte del mismo adaptador de gráficos, TMM asignará el origen que está asignado actualmente a uno de los destinos a ambos destinos. Una vez que TMM realiza la asignación, aparecerá el cuadro de diálogo TMM. Si los destinos están en diferentes adaptadores de gráficos, aparecerá el cuadro de diálogo TMM sin activar el segundo monitor. En esta situación, el cuadro de diálogo TMM no tendrá la opción de clonar o extender.
En la siguiente secuencia se muestra el orden en el que TMM llama a los métodos IViewHelper y realiza otras operaciones en esta situación:
TMM llama a la función EnumDisplayDevices para recuperar la configuración de visualización actual, que incluye adaptadores, pantallas y monitores. Para obtener más información sobre EnumDisplayDevices, consulte la documentación de Microsoft Windows SDK.
TMM compara la configuración de visualización con las configuraciones de visualización grabadas anteriormente.
Si la configuración de presentación tiene uno o dos monitores con datos de información de presentación extendidos (EDID) que TMM no ha encontrado antes, TMM continúa para abrir el cuadro de diálogo TMM.
Para cada adaptador de la configuración de visualización, TMM realiza llamadas al método IViewHelper::GetConnectedIDs para recuperar todos los orígenes del adaptador si los orígenes están asignados o no.
TMM realiza llamadas al método IViewHelper::GetConnectedIDs para recuperar todos los destinos del adaptador, tanto si los destinos están asignados como si no. Cada destino debe estar conectado, pero no es necesario que esté activo.
Para cada origen del adaptador de gráficos, TMM realiza llamadas al método IViewHelper::GetActiveTopology para recuperar los destinos activos del origen.
TMM busca el adaptador de gráficos que tiene un origen asignado a un destino. Este identificador de origen se denomina "CloneSource". Si el adaptador tiene dos destinos, TMM crea una matriz de dos entradas (ULONG targetArray[2]). TMM coloca el identificador de destino existente como el primer elemento y el segundo identificador de destino como segundo elemento.
TMM llama al método IViewHelper::SetActiveTopology(adapterName, CloneSource, 2, targetArray) con los parámetros indicados.
TMM llama al método IViewHelper::Commit .
Si se devuelve un resultado de error de cualquiera de los métodos IViewHelper , el equipo no entra en la vista de clonación y el cuadro de diálogo TMM aparece con las opciones de solo clonación y solo externas deshabilitadas.
Si el equipo escribe la vista clonada y el usuario elige la vista extendida en el cuadro de diálogo TMM (y hace clic en Aceptar o Aplicar), TMM debe desactivar la vista de clonación de la siguiente manera:
TMM llama al método IViewHelper::SetActiveTopology(adapterName, CloneSource, 1, targetArray) con los parámetros indicados.
TMM llama al método IViewHelper::Commit .
En la llamada a SetActiveTopology anterior, el parámetro tres se establece en 1 y no en 2. En esta situación, SetActiveTopology interpreta targetArray como una matriz con un elemento . SetActiveTopology desactiva el segundo destino y entra en una sola vista. A continuación, TMM usa la función ChangeDisplaySettingsEx para ampliar la pantalla. Para obtener más información sobre ChangeDisplaySettingsEx, consulte la documentación de Microsoft Windows SDK.
En la ilustración siguiente se muestra el flujo de operaciones que se producen cuando TMM controla la situación cuando se agrega un monitor para realizar una configuración de dos monitores.