Método IDisplayInformationStaticsInterop::GetForWindow (windows.graphics.display.interop.h)
Recupera un objeto DisplayInformation para la ventana especificada. GetForWindow siempre asigna y devuelve un displayInformation nuevo.
Sintaxis
HRESULT GetForWindow(
HWND window,
REFIID riid,
void **displayInfo
);
Parámetros
window
Tipo: [in] HWND
Identificador de la ventana.
riid
Tipo: [in] REFIID
GUID de la clase DisplayInformation.
displayInfo
Tipo: [iid_is][retval][out] void**
Puntero a un bloque de memoria que recibe un puntero al objeto DisplayInformation devuelto.
Valor devuelto
Tipo: HRESULT
Si la función se ejecuta correctamente, devuelve S_OK. De lo contrario, devuelve un código de errorHRESULT.
Comentarios
Para que DisplayInformation pueda procesar los movimientos de ventana y los mensajes de cambio de PPP, enlaza el bucle de mensajes de su HWND. Para asegurarse de que esto sucede sin problemas, GetForWindow tiene los siguientes requisitos:
- El argumento de la ventana debe ser el HWND de una ventana de nivel superior que pertenece al subproceso actual.
- El subproceso actual debe tener una instancia de Windows.System.DispatcherQueue en ejecución para recibir eventos.
- El subproceso actual puede ser MTA o STA.
Usted es responsable de: almacenar en caché la displayInformation creada mientras el argumento de la ventana sea relevante; desconscribir controladores de eventos; y quitar la última referencia para destruir la instancia de DisplayInformation .
Ejemplos
Es fundamental para una aplicación que represente la gama de colores anchos y el contenido de rango dinámico alto 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
Cliente mínimo compatible | compilación 22621 de Windows 11 |
Encabezado | windows.graphics.display.interop.h |
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de