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) |
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