Método IDisplayInformationStaticsInterop::GetForWindow (windows.graphics.display.interop.h)
Recupera um objeto DisplayInformation para a janela especificada. GetForWindow sempre aloca e retorna um novo DisplayInformation.
Sintaxe
HRESULT GetForWindow(
HWND window,
REFIID riid,
void **displayInfo
);
Parâmetros
window
O identificador da janela.
riid
O
displayInfo
Tipo: [iid_is][retval][out] void**
Um ponteiro para um bloco de memória que recebe um ponteiro para o objeto DisplayInformation
Valor de retorno
Se a função for bem-sucedida, ela retornará S_OK. Caso contrário, ele retornará um
Observações
Para que DisplayInformation possa processar movimentos de janela e mensagens de alteração de DPI, ele conecta o loop de mensagem do HWND. Para garantir que isso ocorra sem problemas, GetForWindow tem os seguintes requisitos:
- O argumento da janela deve ser o HWND de uma janela de nível superior que pertence ao thread atual.
- O thread atual deve ter um Windows.System.DispatcherQueue em execução para receber eventos.
- O thread atual pode ser MTA ou STA.
Você é responsável por: armazenar em cache o DisplayInformation
Exemplos
É vital que um aplicativo que renderize conteúdo de gama de cores largas e de alto intervalo dinâmico se ajuste dinamicamente às condições de alteração do monitor; ou ao mover entre monitores. Em um laptop, o usuário pode ajustar o brilho da tela e isso pode ajustar os parâmetros de mapeamento de tom fornecidos aos aplicativos.
// 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 |
---|---|
de cliente com suporte mínimo | Build 22621 do Windows 11 |
cabeçalho | windows.graphics.display.interop.h |