IDisplayInformationStaticsInterop ::GetForWindow, méthode (windows.graphics.display.interop.h)
Récupère un objet DisplayInformation pour la fenêtre spécifiée. GetForWindow alloue toujours et retourne une nouvelle DisplayInformation.
Syntaxe
HRESULT GetForWindow(
HWND window,
REFIID riid,
void **displayInfo
);
Paramètres
window
Handle de la fenêtre.
riid
GUID
displayInfo
Type : [iid_is][retval][out] void**
Pointeur vers un bloc de mémoire qui reçoit un pointeur vers l’objet DisplayInformation retourné.
Valeur de retour
Type : HRESULT
Si la fonction réussit, elle retourne S_OK. Sinon, elle retourne un HRESULTcode d’erreur.
Remarques
Ainsi, DisplayInformation peut traiter les mouvements de fenêtre et les messages de modification DPI, il raccorde la boucle de message de votre HWND. Pour vous assurer que cela se produit correctement, GetForWindow a les exigences suivantes :
- L’argument de fenêtre doit être le HWND d’une fenêtre de niveau supérieur appartenant au thread actif.
- Le thread actuel doit avoir un Windows.System.DispatcherQueue en cours d’exécution, afin de recevoir des événements.
- Le thread actuel peut être MTA ou STA.
Vous êtes responsable de la mise en cache de l' DisplayInformation
Exemples
Il est essentiel pour une application qui affiche un large éventail de couleurs et un contenu à plage dynamique élevée pour s’ajuster dynamiquement aux conditions changeantes du moniteur ; ou lors du déplacement entre les moniteurs. Sur un ordinateur portable, l’utilisateur peut ajuster la luminosité de l’écran et ajuster les paramètres de mappage de tonalité fournis aux applications.
// 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.
}
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows 11 Build 22621 |
d’en-tête | windows.graphics.display.interop.h |