Metode IDisplayInformationStaticsInterop::GetForWindow (windows.graphics.display.interop.h)
Mengambil objek DisplayInformation untuk jendela yang ditentukan. GetForWindow selalu mengalokasikan dan mengembalikan DisplayInformation baru.
Sintaks
HRESULT GetForWindow(
HWND window,
REFIID riid,
void **displayInfo
);
Parameter
window
Jenis: [in] HWND
Pegangan jendela.
riid
Jenis: [in] REFIID
GUID kelas DisplayInformation.
displayInfo
Jenis: [iid_is][retval][out] batal**
Penunjuk ke blok memori yang menerima penunjuk ke objek DisplayInformation yang dikembalikan.
Menampilkan nilai
Jenis: HRESULT
Jika fungsi berhasil, fungsi akan mengembalikan S_OK. Jika tidak, kode kesalahanHRESULT akan dikembalikan.
Keterangan
Sehingga DisplayInformation dapat memproses pergerakan jendela dan pesan perubahan DPI, hal ini mengaitkan perulangan pesan HWND Anda. Untuk memastikan bahwa itu terjadi dengan lancar, GetForWindow memiliki persyaratan berikut:
- Argumen jendela harus HWND dari jendela tingkat atas yang dimiliki oleh utas saat ini.
- Utas saat ini harus menjalankan Windows.System.DispatcherQueue , untuk menerima peristiwa.
- Utas saat ini dapat berupa MTA atau STA.
Anda bertanggung jawab untuk: penembolokan DisplayInformation yang dibuat selama argumen jendela relevan; membatalkan pendaftaran penanganan aktivitas; dan menghilangkan referensi terakhir untuk menghancurkan instans DisplayInformation .
Contoh
Sangat penting bagi aplikasi yang merender gamut warna lebar dan konten rentang dinamis tinggi untuk menyesuaikan secara dinamis dengan kondisi monitor yang berubah; atau saat berpindah antar monitor. Pada laptop, pengguna mungkin menyesuaikan kecerahan layar, dan yang dapat menyesuaikan parameter pemetaan nada yang disediakan untuk aplikasi.
// It's safe, and recommended, to cache the DisplayInformation created from an HWND,
// since it safely provides the latest information and event handlers for when
// changes take place.
#include <Windows.Graphics.Display.Interop.h>
#include <winrt/Windows.Graphics.Display.h>
using namespace winrt::Windows::Graphics::Display;
...
void ReadHdrParametersFromDisplayInformation(HWND myWindow)
{
auto factory{ winrt::get_activation_factory<DisplayInformation,
IDisplayInformationStaticsInterop>() };
DisplayInformation displayInfo{ nullptr };
winrt::check_hresult(
factory->GetForWindow(
myWindow,
winrt::guid_of<DisplayInformation>(),
winrt::put_abi(displayInfo)
)
);
auto colorInfo{ displayInfo.GetAdvancedColorInfo() };
// Here you can read colorInfo properties such as:
// * CurrentAdvancedColorKind
// * RedPrimary, BluePrimary, GreenPrimary, WhitePoint
// * MinLuminanceInNits, MaxLuminanceInNits
// * MaxAverageFullFrameLuminanceInNits, SdrWhiteLevelInNits
// ... and adapt your rendering.
// You can also subscribe event handlers to listen for changes:
displayInfo.AdvancedColorInfoChanged(
[&](auto sender, auto args)
{
// Handle the event.
}
);
// Cache the DisplayInformation object for as long as your window
// is alive: it always provides fresh data for your window.
}
Persyaratan
Klien minimum yang didukung | Windows 11 Build 22621 |
Header | windows.graphics.display.interop.h |
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