Bagikan melalui


Fungsi LogicalToPhysicalPoint (winuser.h)

Mengonversi koordinat logis titik dalam jendela menjadi koordinat fisik.

Sintaks

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

Parameter

[in] hWnd

Jenis: HWND

Handel ke jendela yang transformasinya digunakan untuk konversi. Jendela tingkat atas didukung penuh. Dalam kasus jendela anak, hanya area tumpang tindih antara induk dan jendela anak yang dikonversi.

[in, out] lpPoint

Jenis: LPPOINT

Penunjuk ke struktur POINT yang menentukan koordinat logis yang akan dikonversi. Koordinat fisik baru disalin ke dalam struktur ini jika fungsi berhasil.

Mengembalikan nilai

Tidak ada

Keterangan

Windows Vista memperkenalkan konsep koordinat fisik. Desktop Window Manager (DWM) menskalakan jendela yang sadar non-titik per inci (dpi) saat layar tinggi dpi. Jendela yang terlihat di layar sesuai dengan koordinat fisik. Aplikasi terus bekerja di ruang logis. Oleh karena itu, tampilan jendela aplikasi berbeda dari yang muncul di layar. Untuk jendela berskala, koordinat logis dan fisik berbeda.

LogicalToPhysicalPoint adalah API transformasi yang dapat dipanggil oleh proses yang menyatakan dirinya sebagai sadar dpi. Fungsi ini menggunakan jendela yang diidentifikasi oleh parameter hWnd dan koordinat logis yang diberikan dalam struktur POINT untuk menghitung koordinat fisik.

Fungsi LogicalToPhysicalPoint menggantikan koordinat logis dalam struktur POINT dengan koordinat fisik. Koordinat fisik relatif terhadap sudut kiri atas layar. Koordinat harus berada di dalam area klien hWnd.

Pada semua platform, LogicalToPhysicalPoint akan gagal pada jendela yang memiliki lebar atau tinggi 0; aplikasi harus terlebih dahulu menetapkan lebar dan tinggi non-0 dengan memanggil, misalnya, MoveWindow. Pada beberapa versi Windows (termasuk Windows 7), LogicalToPhysicalPoint akan tetap gagal jika MoveWindow telah dipanggil setelah panggilan ke ShowWindow dengan SH_HIDE telah menyembunyikan jendela.

Dalam Windows 8, aplikasi sadar sistem–DPI menerjemahkan antara ruang fisik dan logis menggunakan PhysicalToLogicalPoint dan LogicalToPhysicalPoint. Dalam Windows 8.1, virtualisasi tambahan sistem dan komunikasi antar-proses berarti bahwa untuk sebagian besar aplikasi, Anda tidak memerlukan API ini. Akibatnya, di Windows 8.1, PhysicalToLogicalPoint dan LogicalToPhysicalPoint tidak lagi mengubah titik. Sistem mengembalikan semua titik ke aplikasi di ruang koordinatnya sendiri. Perilaku ini mempertahankan fungsionalitas untuk sebagian besar aplikasi, tetapi ada beberapa pengecualian di mana Anda harus membuat perubahan untuk memastikan bahwa aplikasi berfungsi seperti yang diharapkan. Dalam kasus tersebut, gunakan PhysicalToLogicalPointForPerMonitorDPI dan LogicalToPhysicalPointForPerMonitorDPI.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 [hanya aplikasi desktop]
Target Platform Windows
Header winuser.h (sertakan Windows.h)
Pustaka User32.lib
DLL User32.dll
Set API ext-ms-win-ntuser-window-l1-1-1 (diperkenalkan dalam Windows 8.1)