Compartir a través de


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

Tipo: [in] HWND

Identificador de la ventana.

riid

Tipo: [in] REFIID

GUID de de la clase displayInformation 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

Tipo: HRESULT

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 de de 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 siempre que el argumento de 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 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