SetDisplayEx

概要: baSetDisplayExはスクリーンの解像度と色深度を設定します。

シンタックス: Result = baSetDisplayEx( Width , Height , Depth , Refresh, Mode , Force )

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

戻り値:

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

例: OK = baSetDisplayEx( 640 , 480 , 8 , 75 , "temp" , false )

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

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

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

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

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

関連項目: baSetDisplay
baSetMultiDisplay
baScreenInfo