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) |
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk