Partilhar via


Manipulando duas configurações de monitor

Uma configuração de dois monitores gera a caixa de diálogo TMM (Gerenciador de Vários Monitores Transitórios). Se dois destinos fizerem parte do mesmo adaptador gráfico, o TMM mapeará a única fonte mapeada atualmente para um dos destinos para ambos os destinos. Depois que o TMM executar o mapeamento, a caixa de diálogo do TMM será exibida. Se os destinos estiverem em adaptadores gráficos diferentes, a caixa de diálogo TMM será exibida sem ativar o segundo monitor. Nessa situação, a caixa de diálogo do TMM não terá a opção de clonar ou estender.

A sequência a seguir mostra a ordem na qual o TMM chama os métodos IViewHelper e executa outras operações nessa situação:

  1. O TMM chama a função EnumDisplayDevices para recuperar a configuração de exibição atual, que inclui adaptadores, monitores e monitores. Para obter mais informações sobre EnumDisplayDevices, consulte a documentação do SDK do Microsoft Windows.

  2. O TMM compara a configuração de exibição com as configurações de exibição registradas anteriormente.

  3. Se a configuração de exibição tiver um ou dois monitores com EDID (Dados de Informações de Exibição Estendidas) que o TMM não encontrou antes, o TMM continuará a abrir a caixa de diálogo do TMM.

  4. Para cada adaptador na configuração de exibição, o TMM faz chamadas para o método IViewHelper::GetConnectedIDs para recuperar todas as fontes no adaptador, quer as fontes sejam mapeadas ou não.

  5. O TMM faz chamadas para o método IViewHelper::GetConnectedIDs para recuperar todos os destinos no adaptador, quer os destinos sejam mapeados ou não. Cada destino deve estar conectado, mas não precisa estar ativo.

  6. Para cada fonte no adaptador gráfico, o TMM faz chamadas para o método IViewHelper::GetActiveTopology para recuperar os destinos ativos para a origem.

  7. O TMM localiza o adaptador gráfico que tem uma origem mapeada para um destino. Esse identificador de origem é chamado de "CloneSource". Se o adaptador tiver dois destinos, o TMM criará uma matriz de duas entradas (ULONG targetArray[2]). O TMM coloca o identificador de destino existente como o primeiro elemento e o segundo identificador de destino como o segundo elemento.

  8. O TMM chama o método IViewHelper::SetActiveTopology(adapterName, CloneSource, 2, targetArray) com os parâmetros indicados.

  9. O TMM chama o método IViewHelper::Commit .

Se um resultado de erro for retornado de qualquer um dos métodos IViewHelper , o computador não entrará no modo de exibição de clone e a caixa de diálogo do TMM será exibida com opções clone-view e somente externas desabilitadas.

Se o computador entrar no modo de exibição de clone e o usuário escolher a exibição estendida na caixa de diálogo do TMM (e clicar em OK ou Aplicar), o TMM deverá desativar a exibição de clone da seguinte maneira:

  1. O TMM chama o método IViewHelper::SetActiveTopology(adapterName, CloneSource, 1, targetArray) com os parâmetros indicados.

  2. O TMM chama o método IViewHelper::Commit .

Na chamada setActiveTopology anterior, o parâmetro três é definido como 1 e não 2. Nessa situação, SetActiveTopology interpreta targetArray como uma matriz com um elemento . SetActiveTopology desativa o segundo destino e entra no modo de exibição único. Em seguida, o TMM usa a função ChangeDisplaySettingsEx para estender a exibição. Para obter mais informações sobre ChangeDisplaySettingsEx, consulte a documentação do SDK do Microsoft Windows.

A figura a seguir mostra o fluxo de operações que ocorrem quando o TMM lida com a situação quando um monitor é adicionado para fazer uma configuração de dois monitores.

Diagrama ilustrando o processo de adição de um monitor para criar uma configuração de dois monitores.