Metodo IDisplayInformationStaticsInterop::GetForWindow (windows.graphics.display.interop.h)
Recupera un oggetto DisplayInformation per la finestra specificata. GetForWindow sempre alloca e restituisce un nuovo DisplayInformation.
Sintassi
HRESULT GetForWindow(
HWND window,
REFIID riid,
void **displayInfo
);
Parametri
window
Handle della finestra.
riid
Tipo: [in] REFIID
GUID
displayInfo
Tipo: [iid_is][retval][out] void**
Puntatore a un blocco di memoria che riceve un puntatore all'oggetto DisplayInformation restituito.
Valore restituito
Se la funzione ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT.
Osservazioni
In modo che DisplayInformation possa elaborare i movimenti delle finestre e i messaggi di modifica DPI, associa il ciclo di messaggi del HWND. Per garantire che ciò avvenga senza problemi, GetForWindow ha i requisiti seguenti:
- L'argomento della finestra di
deve essere il HWND di una finestra di primo livello di proprietà del thread corrente. - Per ricevere eventi, il thread corrente deve avere un Windows.System.DispatcherQueue in esecuzione.
- Il thread corrente può essere MTA o STA.
Sei responsabile della memorizzazione nella cache del DisplayInformation creato
Esempi
È fondamentale per un'app che esegue il rendering di un'ampia gamma di colori e di un intervallo dinamico elevato per regolare dinamicamente le condizioni del monitor; o quando si spostano tra monitor. In un portatile, l'utente potrebbe regolare la luminosità dello schermo e che può regolare i parametri di mapping del tono forniti alle app.
// 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.
}
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows 11 Build 22621 |
intestazione |
windows.graphics.display.interop.h |