Método IDisplayInformationStaticsInterop::GetForWindow (windows.graphics.display.interop.h)
Recupera un objeto DisplayInformation para la ventana especificada. GetForWindow siempre asigna y devuelve un nuevo DisplayInformation.
Sintaxis
HRESULT GetForWindow(
HWND window,
REFIID riid,
void **displayInfo
);
Parámetros
window
Identificador de la ventana.
riid
GUID de
displayInfo
Tipo: [iid_is][retval][out] void**
Puntero a un bloque de memoria que recibe un puntero al objeto DisplayInformation devuelto displayInformation.
Valor devuelto
Si la función se ejecuta correctamente, devuelve S_OK. De lo contrario, devuelve un código de error HRESULT.
Observaciones
Para que displayInformation pueda procesar los movimientos de ventana y los mensajes de cambio de PPP, enlaza el bucle de mensajes de la HWND. Para asegurarse de que esto sucede sin problemas, GetForWindow tiene los siguientes requisitos:
- El argumento de
ventana debe ser el HWND dede una ventana de nivel superior que sea propiedad del subproceso actual. - El subproceso actual debe tener un Windows.System.DispatcherQueue en ejecución para recibir eventos.
- El subproceso actual puede ser MTA o STA.
Usted es responsable de: almacenar en caché el DisplayInformation creado
Ejemplos
Es fundamental para una aplicación que represente la gama de colores anchos y el contenido de rango alto dinámico para ajustar dinámicamente a las condiciones cambiantes del monitor; o al moverse entre monitores. En un portátil, el usuario puede ajustar el brillo de la pantalla y que pueda ajustar los parámetros de asignación de tono proporcionados a las aplicaciones.
// 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.
}
Requisitos
Requisito | Valor |
---|---|
cliente mínimo admitido | Compilación 22621 de Windows 11 |
encabezado de |
windows.graphics.display.interop.h |