posicionando efetivamente as janelas em vários monitores usando setWindowPos
requer uma compreensão diferenciada da configuração de exibição do sistema e do conceito de tela virtual.
Sistema Display Configuration:
A origem do monitor primário é (0, 0). Os monitores secundários têm coordenadas X negativas (à esquerda das coordenadas X Primary) ou Positiva (à direita da Primária).
a tela virtual:
Esta é uma tela conceitual que abrange todos os monitores conectados. Sua origem é o canto superior esquerdo do monitor mais à esquerda. Sua largura é a soma de todas as larguras do monitor e sua altura é a altura do monitor mais alto.
aproveitando a classe screen
:
A classe a classe
oferece métodos para recuperar informações cruciais da tela:
screen.fromhandle (hwnd)
: identifica a tela que contém uma determinada janela (hwnd). screen.getBounds (ret)
: retorna os limites da tela que contém um retângulo especificado. screen.devicename
: recupera o nome do dispositivo da tela, útil para criação de contexto gráfico. utilizando funções nativas win32:
Essas funções fornecem métodos alternativos para identificação de monitor:
monitorfromwindow
: retorna o identificador de monitor associado a uma janela. MonitorFromPoint
: Retorna o identificador do monitor para um determinado ponto. MonitorFromRect
: Retorna o identificador do monitor para um determinado retângulo. setWindowpos
e monitor coordenadas Para posicionar uma janela em um monitor específico usando setWindowPos
, siga estas etapas:
Identifique o monitor de destino: obtenha o identificador hmonitor
do monitor desejado usando os métodos descritos acima.
calcular coordenadas da tela virtual: Ajuste a coordenada x da janela com base na posição do monitor em relação ao monitor primário. Subtraia a largura total dos monitores anteriores para os da esquerda do primário e adicione a largura total dos monitores anteriores e o primário para os da direita.
use setWindowPos
: Empregue as coordenadas calculadas da tela virtual dentro do setWindowpos
Call:
SetWindowPos(hwnd, hWndInsertAfter, x, y, cx, cy, SWP_NOZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);
considerando cuidadosamente o arranjo de exibição do sistema e empregando essas técnicas, você pode posicionar com precisão as janelas em qualquer monitor dentro de uma configuração de vários monitores usando setWindowPos
.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3