Compartilhar via


Vários aplicativos monitores em sistemas diferentes

Para que seu aplicativo monitorware múltiplo funcione em sistemas com e sem suporte a vários monitores, vincule seu aplicativo ao Multimon.h. Você também deve definir COMPILE_MULTIMON_STUBS em exatamente um arquivo C. Se o sistema não der suporte a vários monitores, isso retornará valores padrão de GetSystemMetrics e as várias funções de monitor atuarão como se houvesse apenas uma exibição. Em vários sistemas de monitor, seu aplicativo funcionará normalmente.

Como as coordenadas negativas podem ocorrer facilmente em um sistema multimonitoramento, você deve recuperar coordenadas que são empacotadas no lParam usando as macros GET_X_LPARAM e GET_Y_LPARAM .

Não use coordenadas ou coordenadas negativas maiores que SM_CXSCREEN e SM_CYSCREEN para ocultar uma janela. O Windows que usa esses limites para ocultar pode aparecer em outro monitor. Da mesma forma, não use esses limites para manter uma janela visível porque isso pode fazer com que uma janela seja ajustada ao monitor primário. É melhor reexaminar aplicativos existentes para esses problemas. No entanto, você pode minimizar problemas em aplicativos existentes executando o aplicativo no monitor primário ou mantendo o monitor primário no canto superior esquerdo da tela virtual.

Observe que SM_CXMAXTRACK e SM_CYMAXTRACK são definidos para a área de trabalho, não apenas um monitor. O Windows que usa esses limites pode precisar ser redefinido.

Uma janela pai ou relacionada pode não estar no mesmo monitor que uma janela filho. Para localizar o monitor de uma janela, os aplicativos devem usar a função MonitorFromWindow .

Para que um protetor de tela seja exibido em todos os monitores, vincule-se à versão mais recente do Scrnsave.lib. Caso contrário, o protetor de tela só poderá aparecer no monitor primário e deixar os outros monitores intocados. Os poupadores de tela vinculados ao Scrnsave.lib mais recente funcionarão em sistemas de monitor único e múltiplo. Para ter um protetor de tela diferente em cada monitor, use as várias funções de monitor para manipular cada monitor separadamente.

Os dispositivos de entrada que fornecem coordenadas para o sistema em coordenadas absolutas, como tablets, têm sua entrada de cursor restrita ao monitor primário. Para alternar a entrada do tablet entre monitores, consulte as instruções do OEM.

Para mapear a entrada do mouse enviada em coordenadas absolutas para toda a tela virtual, use a estrutura INPUT com MOUSEEVENTF_ABSOLUTE e MOUSEEVENTF_VIRTUALDESKTOP.

A função BitBlt funciona bem para vários sistemas de monitor. No entanto, as funções MaskBlt, PlgBlt, StretchBlt e TransparentBlt falharão se os contextos do dispositivo de origem e de destino forem diferentes.