Compartilhar via


Função LogicalToPhysicalPoint (winuser.h)

Converte as coordenadas lógicas de um ponto em uma janela em coordenadas físicas.

Sintaxe

BOOL LogicalToPhysicalPoint(
  [in]      HWND    hWnd,
  [in, out] LPPOINT lpPoint
);

Parâmetros

[in] hWnd

Digite: HWND

Um identificador para a janela cuja transformação é usada para a conversão. Há suporte total para janelas de nível superior. No caso de janelas filho, somente a área de sobreposição entre o pai e a janela filho é convertida.

[in, out] lpPoint

Tipo: LPPOINT

Um ponteiro para uma estrutura POINT que especifica as coordenadas lógicas a serem convertidas. As novas coordenadas físicas serão copiadas para essa estrutura se a função for bem-sucedida.

Retornar valor

Nenhum

Comentários

O Windows Vista apresenta o conceito de coordenadas físicas. O DWM (Gerenciador de Janelas da Área de Trabalho) dimensiona janelas sem reconhecimento de pontos por polegada (dpi) quando a exibição é alta dpi. A janela vista na tela corresponde às coordenadas físicas. O aplicativo continua funcionando no espaço lógico. Portanto, a exibição do aplicativo da janela é diferente daquela exibida na tela. Para janelas dimensionadas, as coordenadas lógicas e físicas são diferentes.

LogicalToPhysicalPoint é uma API de transformação que pode ser chamada por um processo que se declara como com reconhecimento de dpi. A função usa a janela identificada pelo parâmetro hWnd e as coordenadas lógicas fornecidas na estrutura POINT para calcular as coordenadas físicas.

A função LogicalToPhysicalPoint substitui as coordenadas lógicas na estrutura POINT pelas coordenadas físicas. As coordenadas físicas são relativas ao canto superior esquerdo da tela. As coordenadas precisam estar dentro da área do cliente do hWnd.

Em todas as plataformas, LogicalToPhysicalPoint falhará em uma janela que tenha 0 largura ou altura; um aplicativo deve primeiro estabelecer uma largura e altura não 0 chamando, por exemplo, MoveWindow. Em algumas versões do Windows (incluindo o Windows 7), LogicalToPhysicalPoint ainda falhará se MoveWindow tiver sido chamado após uma chamada para ShowWindow com SH_HIDE ocultar a janela.

Em Windows 8, aplicativos com reconhecimento de DPI do sistema são convertidos entre espaço físico e lógico usando PhysicalToLogicalPoint e LogicalToPhysicalPoint. Em Windows 8.1, a virtualização adicional do sistema e das comunicações entre processos significa que, para a maioria dos aplicativos, você não precisa dessas APIs. Como resultado, em Windows 8.1, PhysicalToLogicalPoint e LogicalToPhysicalPoint não transformam mais pontos. O sistema retorna todos os pontos para um aplicativo em seu próprio espaço de coordenadas. Esse comportamento preserva a funcionalidade da maioria dos aplicativos, mas há algumas exceções em que você deve fazer alterações para garantir que o aplicativo funcione conforme o esperado. Nesses casos, use PhysicalToLogicalPointForPerMonitorDPI e LogicalToPhysicalPointForPerMonitorDPI.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho winuser.h (inclua Windows.h)
Biblioteca User32.lib
DLL User32.dll
Conjunto de APIs ext-ms-win-ntuser-window-l1-1-1 (introduzido em Windows 8.1)