ホームページ > バックエンド開発 > C++ > SetWindowposを使用して、複数のモニターにWindowsを正確に配置するにはどうすればよいですか?

SetWindowposを使用して、複数のモニターにWindowsを正確に配置するにはどうすればよいですか?

Patricia Arquette
リリース: 2025-01-30 18:36:09
オリジナル
218 人が閲覧しました

How Can I Accurately Position Windows Across Multiple Monitors Using SetWindowPos?

SetWindowpos

を使用して、複数のモニターにわたって正確なウィンドウ配置

を使用して複数のモニターにウィンドウを効果的に配置するには、システムディスプレイ構成と仮想画面の概念を微妙に理解する必要があります。 SetWindowPosシステムディスプレイと仮想画面の理解

システムディスプレイ構成:

プライマリモニターの起源は(0、0)です。 セカンダリモニターには、負のX座標(プライマリの左)または正のX座標(プライマリの右)があります。

仮想画面:

これは、接続されたすべてのモニターを含む概念的なディスプレイです。その起源は、左端のモニターの左上隅です。 その幅はすべてのモニター幅の合計であり、その高さは最も高いモニターの高さです。 システムディスプレイ情報の取得

クラスを活用してください:

クラスは、重要な画面情報を取得するための方法を提供します:Screen

:特定のウィンドウ(hwnd)を含む画面を識別します Screen

:指定された長方形を含む画面の境界を返します。
  • :グラフィックスコンテキストの作成に役立つ画面のデバイス名を取得します。 Screen.FromHandle(hwnd) ネイティブWin32関数を使用する
  • Screen.GetBounds(rect)これらの関数は、モニター識別のための代替方法を提供します:
  • Screen.DeviceName
  • :ウィンドウに関連付けられたモニターハンドルを返します。

:指定されたポイントのモニターハンドルを返します。

:指定された長方形のモニターハンドルを返します。

  • MonitorFromWindowを使用してWindowsを配置し、座標を監視します
  • MonitorFromPointを使用して特定のモニターにウィンドウを配置するには、次の手順に従ってください。
  • MonitorFromRect
  • ターゲットモニターを特定します:
上記の方法を使用して、目的のモニターの

ハンドルを取得します。 SetWindowPos

SetWindowPos仮想画面座標を計算します:

プライマリモニターに対するモニター位置に基づいて、ウィンドウのx座標を調整します。 プライマリの左側のモニターの前のモニターの総幅を減算し、前のモニターの総幅と右側のプライマリを追加します。
  1. 使用hMonitor

    コール内で計算された仮想画面座標を使用してください:
  2. <code class="language-c++">SetWindowPos(hwnd, hWndInsertAfter, x, y, cx, cy, SWP_NOZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);</code>
    ログイン後にコピー

システムのディスプレイの配置を慎重に検討し、これらの手法を使用することにより、マルチモニターセットアップ内の任意のモニターにWindowsを正確に配置できます。

以上がSetWindowposを使用して、複数のモニターにWindowsを正確に配置するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート