Bagikan melalui


Fungsi PhysicalToLogicalPoint (winuser.h)

Mengonversi koordinat fisik titik dalam jendela menjadi koordinat logis.

Sintaks

BOOL PhysicalToLogicalPoint(
  [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 fisik/layar yang akan dikonversi. Koordinat logis baru disalin ke dalam struktur ini jika fungsi berhasil.

Menampilkan 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.

Fungsi ini menggunakan jendela yang diidentifikasi oleh parameter hWnd dan koordinat fisik yang diberikan dalam struktur POINT untuk menghitung koordinat logis. Koordinat logis adalah koordinat yang tidak terukur yang muncul ke aplikasi dengan cara terprogram. Dengan kata lain, koordinat logis adalah koordinat yang dikenali aplikasi, yang dapat berbeda dari koordinat fisik. API kemudian mengganti koordinat fisik dengan koordinat logis. Koordinat baru berada di koordinat dunia yang asalnya adalah (0, 0) di desktop. Koordinat yang diteruskan ke API harus berada di hWnd.

Koordinat sumber ada di unit perangkat.

Pada semua platform, PhysicalToLogicalPoint 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), PhysicalToLogicalPoint akan tetap gagal jika MoveWindow telah dipanggil setelah panggilan ke ShowWindow dengan SH_HIDE telah menyembunyikan jendela.

Di Windows 8, aplikasi sadar sistem–DPI menerjemahkan antara ruang fisik dan logis menggunakan PhysicalToLogicalPoint dan LogicalToPhysicalPoint. Di 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

   
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 di Windows 8.1)