SetMultiDisplay

概要: baSetMultiDisplayはマルチモニタのスクリーン解像度と色深度を設定します。

シンタックス: Result = baSetMultiDisplay( Monitor, Width , Height , Depth , Refresh, Mode , Flags )

パラメータ: #string, #integer, #integer, #integer, #integer, #string, #integer
Monitor 変更を加えたいモニタ。
Width 変更後のスクリーンの幅をピクセルで指定します。
Height 変更後のスクリーンの高さをピクセルで指定します。
Depth 変更後の色深度をビットで指定します。
Refresh 変更後のリフレッシュレート。
Mode 新しい設定を適用する際の方法を指定します。次のいずれかになります。
 "temp"  一時的にディスプレイ設定を変更します。
 "perm"  完全にディスプレイ設定を変更します。
 "test"  再起動なしにディスプレイ設定が変更可能かどうかテストします。
Flags オプションの動作を変更します。

戻り値:

#integer
ディスプレイ設定が変更された場合、または再起動なしに変更可能な場合は0を返します。
Windowsを再起動しないと設定変更が反映されない場合は1を返します。
無効なスクリーンサイズを指定した場合など、その他のエラーが発生した場合は0未満の値を返します。

例: OK = baSetMultiDisplay( "primary", 640 , 480 , 8 , 75 , "temp" , 2 )

ノート: Monitorは変更を加えたいモニタの名前です。例: "\\.\DISPLAY1"。現在のモニタのリストはbaMultiDisplayListを使って取得することができます。名前を調べなくても、値に"primary"を指定するとプライマリディスプレイの設定ができます。"secondary"はセカンダリディスプレイを変更します。

Flagsには2つのフラグが定義されています。
  1  Force。設定変更をサポートしていないディスプレイでも強制的に変更します。
 注意してご使用ください。
  2  Reset。プロジェクタが終了すると、スクリーン設定も元の値に戻ります。
 このフラグを使用すれば、プロジェクタを終了する前にディスプレイを元に戻しておく
 必要がないということです。ファンクションに指定したディスプレイだけではなく、
 システム内のすべてのディスプレイがリセットされます。


すべてのディスプレイカードやドライバが再起動なしの設定変更に対応しているわけではありません。Forceオプションはマイクロソフトが正式にサポートしているものではありません。このオプションは再起動せずに強制的にディスプレイ設定を変更します。ビデオカードやドライバによってはうまく動作するものもありますが、パレットの不具合を起こすものや、システムがクラッシュしてしまうものもあります。十分に動作チェックをした上で把握できているハードウェアのみに適用したほうがよいでしょう。

"temp"モードを使用したときは、システムを再起動するとユーザが設定していたディスプレイ設定に戻ります。したがって設定変更の際にWindowsの再起動が必要な環境では"temp"モードを設定することはできません。

"temp"モードを使用するときは、プログラム動作中にユーザがタスクバーやデスクトップを利用できなくてもよい場合だけにしてください。"temp"モード実行中は、デスクトップアイコンやタスクバーが再配置されないため、使いにくい位置になっている場合があるためです。ユーザがデスクトップにアクセスできるようにするのであれば、"perm"オプションを使用すべきでしょう。

現在のリフレッシュレートはbaScreenInfo( "refresh" )を使うことで取得できます。ディスプレイカードが対応していても、モニタでは扱えないリフレッシュレートを設定してしまう可能性もあります。

RefreshオプションはNT, 2000およびXPのみで動作します。

関連項目: baMultiDisplayInfo
baMultiDisplayList
baSetDisplay
baSetDisplayEx
baScreenInfo