다음을 통해 공유


LogicalToPhysicalPoint 함수(winuser.h)

창에 있는 점의 논리적 좌표를 실제 좌표로 변환합니다.

구문

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

매개 변수

[in] hWnd

형식: HWND

변환에 변환이 사용되는 창에 대한 핸들입니다. 최상위 창은 완전히 지원됩니다. 자식 창의 경우 부모 창과 자식 창 간에 겹치는 영역만 변환됩니다.

[in, out] lpPoint

형식: LPPOINT

변환할 논리 좌표를 지정하는 POINT 구조체에 대한 포인터입니다. 함수가 성공하면 새 물리적 좌표가 이 구조체로 복사됩니다.

반환 값

없음

설명

Windows Vista는 물리적 좌표의 개념을 소개합니다. DWM(데스크톱 창 관리자)은 디스플레이가 높은 dpi일 때 dpi(인치당 비도트) 인식 창의 크기를 조정합니다. 화면에 표시되는 창은 실제 좌표에 해당합니다. 애플리케이션은 논리 공간에서 계속 작동합니다. 따라서 응용 프로그램의 창 보기는 화면에 표시되는 것과 다릅니다. 크기가 조정된 창의 경우 논리 좌표와 물리적 좌표가 다릅니다.

LogicalToPhysicalPoint 는 자신을 dpi 인식으로 선언하는 프로세스에서 호출할 수 있는 변환 API입니다. 함수는 hWnd 매개 변수로 식별된 창과 POINT 구조에 지정된 논리 좌표를 사용하여 물리적 좌표를 계산합니다.

LogicalToPhysicalPoint 함수는 POINT 구조체의 논리 좌표를 실제 좌표로 바꿉니다. 실제 좌표는 화면의 왼쪽 위 모서리를 기준으로 합니다. 좌표는 hWnd의 클라이언트 영역 내에 있어야 합니다.

모든 플랫폼에서 LogicalToPhysicalPoint 는 너비 또는 높이가 0인 창에서 실패합니다. 애플리케이션은 먼저 MoveWindow와 같이 를 호출하여 0이 아닌 너비와 높이를 설정해야 합니다. 일부 Windows 버전(Windows 7 포함)에서는 SH_HIDE 함께 ShowWindow를 호출한 후 MoveWindow가 호출된 경우에도 LogicalToPhysicalPoint가 실패합니다.

Windows 8 시스템-DPI 인식 애플리케이션은 PhysicalToLogicalPoint 및 LogicalToPhysicalPoint를 사용하여 물리적 공간과 논리 공간 간에 변환됩니다. Windows 8.1 시스템 및 프로세스 간 통신의 추가 가상화는 대부분의 애플리케이션에서 이러한 API가 필요하지 않다는 것을 의미합니다. 따라서 Windows 8.1 PhysicalToLogicalPoint 및 LogicalToPhysicalPoint는 더 이상 지점을 변환하지 않습니다. 시스템은 자체 좌표 공간의 애플리케이션에 대한 모든 지점을 반환합니다. 이 동작은 대부분의 애플리케이션에 대한 기능을 유지하지만 애플리케이션이 예상대로 작동하는지 확인하기 위해 변경해야 하는 몇 가지 예외가 있습니다. 이러한 경우 PhysicalToLogicalPointForPerMonitorDPILogicalToPhysicalPointForPerMonitorDPI를 사용합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱만 해당]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱만 해당]
대상 플랫폼 Windows
헤더 winuser.h(Windows.h 포함)
라이브러리 User32.lib
DLL User32.dll
API 세트 ext-ms-win-ntuser-window-l1-1-1(Windows 8.1 소개)