Aplicações de múltiplos monitores em diferentes sistemas
Para que seu aplicativo com reconhecimento de vários monitores 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 suportar vários monitores, isso retornará valores padrão de GetSystemMetrics , e as várias funções do monitor agirão como se houvesse apenas uma exibição. Em vários sistemas de monitor, seu aplicativo funcionará normalmente.
Como as coordenadas negativas podem acontecer facilmente em um sistema multimonitor, você deve recuperar as coordenadas que são compactadas no lParam usando as macros GET_X_LPARAM e GET_Y_LPARAM.
Não use coordenadas negativas ou coordenadas maiores que SM_CXSCREEN e SM_CYSCREEN para ocultar uma janela. As janelas que usam esses limites para ocultar podem aparecer em outro monitor. Da mesma forma, não use esses limites para manter uma janela visível, pois isso pode fazer com que uma janela se encaixe no monitor principal. É melhor reexaminar os 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 principal 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 para 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 filha. Para localizar o monitor de uma janela, os aplicativos devem usar o função de MonitorFromWindow.
Para ter uma exibição de proteção de tela em todos os monitores, link com a versão mais recente do Scrnsave.lib. Caso contrário, a proteção de tela pode aparecer apenas no monitor principal e deixar os outros monitores intocados. Os protetores de tela vinculados ao Scrnsave.lib mais recente funcionarão em sistemas de monitor único e múltiplo. Para ter uma proteção de tela diferente em cada monitor, use as várias funções do monitor para lidar com cada monitor separadamente.
Os dispositivos de entrada que fornecem coordenadas ao sistema em coordenadas absolutas, como tablets, têm a entrada do cursor restrita ao monitor principal. Para alternar a entrada do tablet entre monitores, consulte as instruções do OEM.
Para mapear a entrada do mouse que é 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, StretchBlte TransparentBlt falharão se os contextos do dispositivo de origem e destino forem diferentes.