Bagikan melalui


Fungsi PhysicalToLogicalPointForPerMonitorDPI (winuser.h)

Mengonversi titik dalam jendela dari koordinat fisik menjadi koordinat logis, terlepas dari kesadaran titik per inci (dpi) pemanggil. Untuk informasi selengkapnya tentang tingkat kesadaran DPI, lihat PROCESS_DPI_AWARENESS.

Sintaks

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

Parameter

[in] hWnd

Handel ke jendela yang transformasinya digunakan untuk konversi.

[in, out] 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

Mengembalikan TRUE jika berhasil, atau FALSE sebaliknya.

Keterangan

Dalam Windows 8, aplikasi yang sadar sistem–DPI menerjemahkan antara ruang fisik dan logis menggunakan PhysicalToLogicalPoint dan LogicalToPhysicalPoint. Dalam Windows 8.1, virtualisasi tambahan sistem dan komunikasi antarproses berarti bahwa untuk sebagian besar aplikasi, Anda tidak memerlukan API ini. Akibatnya, dalam Windows 8.1, API ini 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.

Misalnya, aplikasi mungkin perlu berjalan di seluruh pohon jendela dari proses lain dan meminta sistem untuk informasi yang bergantung pada DPI tentang jendela. Secara default, sistem akan mengembalikan informasi berdasarkan kesadaran DPI dari pemanggil. Ini sangat ideal untuk sebagian besar aplikasi. Namun, pemanggil mungkin memerlukan informasi berdasarkan kesadaran DPI terhadap aplikasi yang terkait dengan jendela. Ini mungkin diperlukan karena kedua aplikasi mengirim informasi yang bergantung pada DPI antara satu sama lain secara langsung. Dalam hal ini, aplikasi dapat menggunakan LogicalToPhysicalPointForPerMonitorDPI untuk mendapatkan koordinat fisik dan kemudian menggunakan PhysicalToLogicalPointForPerMonitorDPI untuk mengonversi koordinat fisik menjadi koordinat logis berdasarkan kesadaran DPI dari HWND yang disediakan.

Pertimbangkan dua aplikasi, satu memiliki nilai PROCESS_DPI_AWARENESSPROCESS_DPI_UNAWARE dan yang lainnya memiliki nilai PROCESS_PER_MONITOR_AWARE. Aplikasi PROCESS_PER_MONITOR_AWARE membuat jendela pada satu monitor di mana faktor skalanya adalah 200% (192 DPI). Jika kedua aplikasi memanggil GetWindowRect di jendela ini, mereka akan menerima nilai yang berbeda. Aplikasi PROCESS_DPI_UNAWARE akan menerima rect berdasarkan 96 koordinat DPI, sementara aplikasi PROCESS_PER_MONITOR_AWARE akan menerima koordinat yang cocok dengan DPI monitor yang sebenarnya. Jika PROCESS_DPI_UNAWARE membutuhkan rect yang dikembalikan sistem ke aplikasi PROCESS_PER_MONITOR_AWARE , sistem dapat memanggil LogicalToPhysicalPointForPerMonitorDPI untuk sudut-sudut rect-nya dan meneruskan handel ke jendela aplikasi PROCESS_PER_MONITOR_AWARE . Ini akan mengembalikan poin berdasarkan kesadaran aplikasi lain yang dapat digunakan untuk membuat rect. Ini berfungsi karena karena PROCESS_PER_MONITOR_AWARE menggunakan DPI aktual dari koordinat monitor, logis, dan fisik identik.

Persyaratan

   
Klien minimum yang didukung Windows 8.1 [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2012 R2 [hanya aplikasi desktop]
Target Platform Windows
Header winuser.h
Pustaka User32.lib
DLL User32.dll
Set API ext-ms-win-ntuser-window-l1-1-4 (diperkenalkan dalam Windows 10, versi 10.0.14393)

Lihat juga

LogicalToPhysicalPointForPerMonitorDPI

PROCESS_DPI_AWARENESS