エセフルスクリーン

 2010-09-27
ゲームウィンドウのサイズを解像度・800x600・フルサイズの順に変更する機能を追加します。
用意されている関数を使用することで自由なサイズに変更することも可能です。

エセフルスクリーン
>> ダウンロード


【初期化ファイルの設定】
初期化ファイルの設定を使用して、初期サイズを変更する場合は、
Game.ini ファイルに次の3行を追加します。
[Window]
WIDTH=800
HEIGHT=600
数値部分がウィンドウのサイズとなりますので、変更してください。
※ 初期化ファイルを使用する場合は、『初期化ファイルの操作』が必要となります。

初期化ファイルで設定ができるので、プレイヤーの好きなサイズで遊べるかな?と思ってたりします。


【終了時のサイズを保存】
Main セクションを以下のように変更します。
begin
(中略)
rescue Errno::ENOENT
(中略)
rescue SystemExit
$scene = nil

end

case WND_SIZE::INIT_SIZE
when 1
r = WLIB::GetGameClientRect()
IniFile.write("Game", "Window", "WIDTH", r.width)
IniFile.write("Game", "Window", "HEIGHT", r.height)
when 2
save_data(WLIB::GetGameClientRect(), "Game.rvdata")
end


【切り替えサイズの変更】
サイズ切り替えは、スクリプトの下のほうで、Scene_Base#update を再定義して行っています。
そこで横幅が現在いくらなのかを調べて、次のサイズに変更するという処理を行っています。
ですので、そちらの分岐を増やすなり変更するなりしていただくとできます。
もちろん、横幅しか調べてないので横幅は同じで縦幅だけ違うなんて変更はできません。
-1 というのは、フルサイズ指定してます。
else のところは、変更しないようにしてくださいね。


【位置情報も変更】
WLIB::SetGameWindowSize を使用すると、ウィンドウの位置は自動で中央に変更されます。
位置も含めて指定したい場合は、
WLIB::SetWindowPos(hwnd, x, y, width, height, z, flag) を使用してください。

WLIB::SetGameWindowSize は、クライアント領域での設定ですが、
WLIB::SetWindowPos は、ウィンドウのサイズで設定する必要があります。
現在のウィンドウのサイズを取得するには、WLIB::GetGameWindowRect を使用します。
ちなみに、クライアント領域は、WLIB::GetGameClientRect です。
こちらは、サイズのみの取得ですので、プロパティ x と y は、常に 0 となります。
hwnd = WLIB::GAME_HANDLE
r = WLIB::GetGameWindowRect()
WLIB::SetWindowPos(hwnd, r.x, r.y, r.width, r.height, 0, WLIB::SWP_NOZORDER)

WLIB::SetWindowPos は、Win32API の関数ほぼそのままですので自動調整などは行っていません。
スクリーンの左上が (0,0) であるとは限りませんのでご注意ください。
また、現在の状態を保存して次回起動時に使用する場合なども
次もスクリーンの状態が同じとは限りません。
タスクバーの位置や解像度などに変更があると表示がおかしくなる場合があるのでご注意ください。


【関数一覧】
※ 関数形式でのみ呼び出しが可能ですので、()の省略はできません。
WLIB::SetGameWindowSize(width, height)
 ウィンドウのサイズを変更します。
 処理に失敗した場合は、false を返します。
WLIB::MoveGameWindow(x, y)
 指定座標にウィンドウを移動します。
 処理に失敗した場合は、false を返します。
WLIB::MoveGameWindowCenter()
 画面中央にウィンドウを移動します。
 処理に失敗した場合は、false を返します。
WLIB::GetDesktopRect()
 デスクトップの位置とサイズを取得します。
 処理が成功すると、Rect オブジェクトを返します。
 失敗した場合は、nil が返ります。
WLIB::GetGameWindowRect()
 ウィンドウの位置とサイズを取得します。
 処理が成功すると、Rect オブジェクトを返します。
 失敗した場合は、nil が返ります。
WLIB::GetGameClientRect()
 ウィンドウのクライアント領域のサイズを取得します。
 処理が成功すると、Rect オブジェクトを返します。
 プロパティ x と y は、常に 0 です。
 失敗した場合は、nil が返ります。
WLIB::GetFrameSize()
 ウィンドウのフレームサイズを取得します。
 処理が成功すると、[タイトルバー, 左右フレーム, 上下フレーム] を返します。
コメント




 

 ※ コメント内にURLを含めるには、バッククォート(`)をURLの直前に付け加えてください。


管理人のみ閲覧許可 [?]

トラックバック
トラックバックURL:
http://cacaosoft.blog42.fc2.com/tb.php/456-a1dc295f
≪ トップページへこのページの先頭へ  ≫
カレンダー
01 << 2017/02 >> 03
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 - - - -

カテゴリー
最近の記事
02/14 お返事
01/21 お返事
01/12 更新情報
11/28 お返事
08/08 お返事

最近のコメント
01/21 お返事
11/30 z座標
11/20 z座標
08/03 お返事
02/24 お返事

タグクラウド

リンク