IDisplayInformationStaticsInterop::GetForWindow メソッド (windows.graphics.display.interop.h)
指定したウィンドウの DisplayInformation オブジェクトを取得します。 GetForWindow
構文
HRESULT GetForWindow(
HWND window,
REFIID riid,
void **displayInfo
);
パラメーター
window
型: [入力] HWND
ウィンドウのハンドル。
riid
型: [in] REFIID
DisplayInformation クラスの GUID。
displayInfo
型: [iid_is][retval][out] void**
返された DisplayInformation オブジェクトへのポインターを受け取るメモリ ブロックへのポインター。
戻り値
型: HRESULT
関数が成功した場合は、S_OKを返します。 それ以外の場合は、HRESULTエラー コードを返します。
備考
DisplayInformation
- ウィンドウ の引数は、現在のスレッドが所有する最上位ウィンドウの HWND である必要があります。
- イベントを受信するには、現在のスレッドで windows.System.DispatcherQueue
が実行されている必要があります。 - 現在のスレッドには MTA または STA を指定できます。
作成した DisplayInformation をキャッシュ ウィンドウ の引数が関連している限り、キャッシュする必要があります。イベント ハンドラーの登録解除。DisplayInformation インスタンスを破棄するために、最後の参照を削除します。
例
広色域と高ダイナミック レンジコンテンツをレンダリングするアプリは、モニターの変化する条件に合わせて動的に調整することが重要です。またはモニター間を移動する場合。 ノート PC では、ユーザーは画面の明るさを調整し、アプリに提供されるトーン マッピング パラメーターを調整できます。
// 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.
}
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 11 ビルド 22621 |
ヘッダー | windows.graphics.display.interop.h |