EnableNonClientDpiScaling 関数 (winuser.h)

高 DPI ディスプレイでは、指定した最上位ウィンドウのクライアント領域以外の部分の自動表示スケーリングを有効にします。 そのウィンドウの初期化中に呼び出す必要があります。

メモDPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2のDPI_AWARENESS_CONTEXTで実行されているアプリケーションは、既定でクライアント以外の領域を自動的にスケーリングします。 この関数を呼び出す必要はありません。

 

構文

BOOL EnableNonClientDpiScaling(
  [in] HWND hwnd
);

パラメーター

[in] hwnd

自動スケーリングが有効になっている必要があるウィンドウ。

戻り値

関数が成功すると、戻り値は 0 以外になります。 関数が失敗した場合は、0 を返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

この関数を呼び出すと、 DPI_AWARENESS_CONTEXT_PER_MONITOR_AWAREのDPI_AWARENESS_CONTEXT を持つ個々の最上位ウィンドウに対してクライアント以外のスケーリング 有効になります。 代わりにウィンドウごとの認識を使用せず、プロセス全体が DPI_AWARENESS_PER_MONITOR_AWARE モードで実行されている場合、この関数を呼び出すと、プロセスの最上位レベルのウィンドウでクライアント以外のスケーリングが有効になります。

どちらも true でない場合、または他のウィンドウからこのメソッドを呼び出すと、失敗し、値 0 が返されます。

トップレベル ウィンドウのクライアント以外のスケーリングは、既定では有効になっていません。 この API を呼び出して、クライアント領域以外の領域を自動的にスケーリングする個々の最上位ウィンドウごとに有効にする必要があります。 一度行うと、無効にする方法はありません。 クライアント以外のスケーリングを有効にすると、ウィンドウの DPI の変更に応じて、システムによって描画されたすべての領域が自動的にスケーリングされます。 これには、キャプション バー、スクロール バー、メニュー バーなどの領域が含まれます。 モニターの DPI に基づいて、オペレーティング システムでこれらの領域を正しいサイズで自動的にレンダリングする必要がある場合は、 EnableNonClientDpiScaling を呼び出します。

この関数を呼び出すと、最上位のウィンドウに対してのみクライアント以外のスケーリングが有効になります。 子ウィンドウは影響を受けません。

この関数は、新しいウィンドウの初期化中にWM_NCCREATEから呼び出す必要があります。 呼び出しの例は次のようになります。

case WM_NCCREATE:
{
    EnableNonClientDpiScaling(hwnd);
    return (DefWindowProc(hwnd, message, wParam, lParam));
}

要件

   
サポートされている最小のクライアント Windows 10、バージョン 1607 [デスクトップ アプリのみ]
サポートされている最小のサーバー サポートなし
対象プラットフォーム Windows
ヘッダー winuser.h (Windows.h を含む)
Library User32.lib
[DLL] User32.dll