

モニターを4枚接続できるグラフィックボードをWindows10のPCに接続して、  
画面の出力状態を切り替えるアプリを作りたいと思っています。  
4枚のモニターを1つのモニターとして扱って動画などを再生したり、  
4枚のモニターをそれぞれ独立した画像、動画などを再生したいと思っています。

Windowsが標準でもっているDisplaySwitchをコールすれば良いかと思っていましたが、  
1つのモニターとして表示する事ができないようでした。

何か **C#、C++、Javaなどで組み込める方法** で、  
マルチディスプレイの **画面出力方法を切り替える** 方法をご存知の方がいましたら  
ご教示お願いできないでしょうか。


CC BY-SA 4.0
2018-11-28T08:59:41.167
50713
2019-07-23T05:02:50.483
2019-01-29T13:28:51.153
76
31194
question
java c# c++ windows
マルチモニタの画面切り替え


考え方としては、「モニタや画面出力方法を切り替える」のではなくて、「ウインドウを表示する位置・サイズを各モニタの担当する領域に移動する」ということです。

以下にC++での情報の取得方法が示されています。  
[【高DPI】デスクトップの物理座標系を得るには？【WinAPI】](https://qiita.com/marksard/items/ef3c1846de1d7cae2989)

> デスクトップ矩形には仮想デスクトップ矩形と普通のデスクトップ矩形があります。
>
> モニター毎のデスクトップ矩形  
>  モニターごとのデスクトップ矩形。  
>  さらにモニター矩形とワーク矩形（タスクバー領域を除いた矩形）があります。
>
> 仮想デスクトップ矩形  
>  使用中のモニターすべてを内包する、仮想的に一枚のデスクトップに見立てた時の矩形です。

上記情報を元にSetWindowPosでウインドウの位置・サイズを指定・変更すれば良いでしょう。  
[SetWindowPos関数](https://msdn.microsoft.com/ja-jp/library/cc411206.aspx)

おそらく動くサンプルが以下になるでしょう。  
[マルチディスプレイ時の各ディスプレイの座標を取得する](http://yamatyuu.net/computer/program/sdk/base/enumdisplay/index.html)

あと上記例にもありますが、DPIや個々のサイズの違うマルチモニタの場合の考慮も必要です。  
[(Windows10)高DPIと通常DPIのマルチディスプレイ環境は結構大変](https://3ryupg.hatenablog.com/entry/2018/02/23/000036)  
[秀丸エディタ 新機能の紹介(Per-Monitor
DPI対応)](https://hide.maruo.co.jp/software/hidemarunew/v869_1.html)


CC BY-SA 4.0
2018-11-29T00:07:30.230
50731
2018-11-29T00:07:30.230
26370
50713
answer