MGL::System::Window#

概要#

MGL::System::Windowはアプリケーションが動作しているウィンドウへのアクセス機能を提供するためのクラスです。

宣言#

namespace MGL::System
{
    class Window;
}

利用例#

F12キーを押すたびにフルスクリーンとウィンドウを切り替える例
if (MGL::Input::Keyboard().IsTriggered(MGL::Input::Keycode::F12))
{
    MGL::System::Window().ToggleFullscreen();
}
ウィンドウタイトルに"Set your app name!"と表示する例
MGL::System::Window().SetTitle("Set your app name!");
../_images/system_window_settitle.png

メンバ情報#

種類

名前

内容

バージョン

関数

Resize

ウィンドウのリサイズ

1.0.0+

関数

SetFullscreen

フルスクリーンの設定

1.0.0+

関数

ToggleFullscreen

フルスクリーンの切り替え

1.0.0+

関数

IsFullscreen

フルスクリーン状態の取得

1.0.0+

関数

Focus

ウィンドウのフォーカス

1.0.0+

関数

IsFocused

ウィンドウのフォーカス状態を取得

1.0.0+

関数

Alert

アラートウィンドウの表示

1.0.0+

関数

SetTitle

ウィンドウタイトルを設定

1.0.0+

関数

GetIdentifier

ウィンドウの識別子を取得

1.0.0+

関数

GetScreenSize

ウィンドウが存在する画面のサイズを取得

1.0.0+


Resize#

ウィンドウのリサイズ

宣言#

namespace MGL::System
{
    class Window
    {
        void Resize(uint32_t width, uint32_t height) noexcept;
    };
}

引数#

uint32_t width

ウィンドウの幅

uint32_t height

ウィンドウの高さ

説明#

アプリケーションが動作しているウィンドウのサイズを、指定した幅と高さに変更します。

幅と高さの単位は内部解像度に準拠したピクセルサイズです。論理解像度および物理解像度とは異なる場合がある点にご注意ください。

注釈

解像度の種類についてはMGL::System::ScreenSizeの説明を参照してください。

利用例#

ウィンドウサイズを1920x1080のサイズに変更する例
MGL::System::Window().Resize(1920, 1080);

バージョン情報#

MGL 1.0.0
  • 初回リリース

関連#


SetFullscreen#

フルスクリーンの設定

宣言#

namespace MGL::System
{
    class Window
    {
        void SetFullscreen(bool isEnabled) noexcept;
    };
}

引数#

bool isEnabled

trueでフルスクリーンを有効、falseで無効化

説明#

ウィンドウをフルスクリーン化、または解除するための関数です。

引数isEnabledtrueを指定することで、そのウィンドウの描画領域を全画面に拡大します。falseを指定した場合はフルスクリーンを解除し、ウィンドウ表示に戻します。

動作環境がウィンドウモードに対応していない場合、この関数は何もしません。

利用例#

フルスクリーンモードに移行する例
MGL::System::Window().SetFullscreen(true);

バージョン情報#

MGL 1.0.0
  • 初回リリース

関連#


ToggleFullscreen#

フルスクリーンの切り替え

宣言#

namespace MGL::System
{
    class Window
    {
        void ToggleFullscreen() noexcept;
    };
}

説明#

フルスクリーンとウィンドウの切り替えを行います。

この関数を呼び出した時点でフルスクリーンモードだった場合、ウィンドウモードへと切り替えます。逆にウィンドウモードの状態で呼び出した場合、フルスクリーンモードへと切り替えます。

利用例#

F12キーを押すたびにフルスクリーンとウィンドウを切り替える例
if (MGL::Input::Keyboard().IsTriggered(MGL::Input::Keycode::F12))
{
    MGL::System::Window().ToggleFullscreen();
}

バージョン情報#

MGL 1.0.0
  • 初回リリース

関連#


IsFullscreen#

フルスクリーン状態の取得

宣言#

namespace MGL::System
{
    class Window
    {
        [[nodiscard]] bool IsFullscreen() const noexcept;
    };
}

戻り値#

bool

フルスクリーン状態の場合はtrue、無効な場合はfalse

説明#

現在のフルスクリーン状態を取得します。戻り値がtrueの場合は現在のモードがフルスクリーンモードであることを表します。

アプリケーションがウィンドウモードに対応していない場合は常にtrueを返します。

利用例#

状況に応じてフルスクリーンモードとウィンドウモードを切り替える関数の例
void ToggleFullscreen()
{
    MGL::System::Window window;

    if (window.IsFullscreen())
    {
        window.SetFullscreen(false);
    }
    else
    {
        window.SetFullscreen(true);
    }
}

注釈

この関数の機能はToggleFullscreenとほぼ同等です。

バージョン情報#

MGL 1.0.0
  • 初回リリース

MGL 1.1.13
  • 関数の戻り値に[[nodiscard]]属性を付与

関連#


Focus#

ウィンドウのフォーカス

宣言#

namespace MGL::System
{
    class Window
    {
        void Focus() noexcept;
    };
}

説明#

ウィンドウが非フォーカス状態である場合に強制的にフォーカスします。

フォーカスの細かい挙動やその呼び方はシステム依存となります。標準構成においては、Windowsでは対象ウィンドウをアクティベートし、macOSではアプリケーションをアクティベートしたうえでキーウィンドウに設定します。この関数はウィンドウを最前面に移動し、キーの入力状態を受け付ける状態にすることを想定しています。

利用例#

ウィンドウを強制的にフォーカスする例
MGL::System::Window().Focus();

バージョン情報#

MGL 1.0.0
  • 初回リリース

関連#


IsFocused#

ウィンドウのフォーカス状態を取得

宣言#

namespace MGL::System
{
    class Window
    {
        [[nodiscard]] bool IsFocused() const noexcept;
    };
}

戻り値#

bool

ウィンドウがフォーカスされている状態であればtrue、そうでなければfalse

説明#

ウィンドウがフォーカス状態であるかを取得します。

フォーカスの細かい挙動やその呼び方はシステム依存となります。この関数は、ウィンドウが最前面に表示されており、キーの入力状態を受け付けている状態にtrueを返すことを想定しています。

利用例#

ウィンドウが非フォーカス状態の場合に強制的にフォーカスする例
MGL::System::Window window;

if (!window.IsFocused())
{
    window.Focus();
}

注意

この処理をメインループ中に記述すると実行中は常にフォーカス状態になりますが、ユーザーにとっては大迷惑なため推奨されません。

バージョン情報#

MGL 1.0.0
  • 初回リリース

MGL 1.1.13
  • 関数の戻り値に[[nodiscard]]属性を付与

関連#


Alert#

アラートウィンドウの表示

宣言#

namespace MGL::System
{
    class Window
    {
        void Alert(const char *message) const noexcept;
    };
}

戻り値#

const char *message

表示メッセージ (UTF-8エンコーディング)

説明#

アラートメッセージのためのモーダルウィンドウを表示します。表示メッセージは引数messageにUTF-8エンコーディングで指定します。

このアラートはウィンドウの更新処理をブロックし、システム標準のモーダルダイアログを用いてメッセージを表示します。主に起動失敗時のエラーメッセージなど、アウトゲームでの使用が想定されています。ゲーム内で使用するダイアログはこの関数を使用せず、ゲーム側で個別に実装したものを使用してください。

利用例#

アプリケーション起動時に"Test Message"というアラートを表示する例
bool Application::OnInitialize() noexcept
{
    MGL::System::Window().Alert("Test Message");
}
実行結果 (macOSの場合)
../_images/system_window_alert.png

バージョン情報#

MGL 1.0.0
  • 初回リリース


SetTitle#

ウィンドウタイトルを設定

宣言#

namespace MGL::System
{
    class Window
    {
        void SetTitle(const char *title) noexcept
    };
}

引数#

const char *title

設定する文字列 (UTF-8エンコーディング)

説明#

ウィンドウタイトルに表示する文字列を設定します。引数titleはUTF-8エンコーディングで指定する必要があります。

利用例#

ウィンドウタイトルに"Set your app name!"と表示する例
MGL::System::Window().SetTitle("Set your app name!");
表示結果 (macOSの場合)
../_images/system_window_settitle.png

バージョン情報#

MGL 1.0.0
  • 初回リリース


GetIdentifier#

ウィンドウの識別子を取得

宣言#

namespace MGL::System
{
    class Window
    {
        [[nodiscard]] int32_t GetIdentifier() const noexcept;
    };
}

戻り値#

int32_t

ウィンドウの識別子

説明#

システムがウィンドウの識別に使用している値を取得します。

この関数が返す具体的な値や意味はシステムに強く依存します。現時点ではこの関数はmacOSのみで機能しており、それ以外の環境では常に0を返します。

通常、この関数をアプリケーション側で使用する機会はありません。

利用例#

識別子を取得して表示する例
auto identifier = MGL::System::Window().GetIdentifier();

MGL_TRACE("window identifier: %d", identifier);
実行結果 (macOSの場合、一例)
window identifier: 814

バージョン情報#

MGL 1.0.0
  • 初回リリース

MGL 1.1.13
  • 関数の戻り値に[[nodiscard]]属性を付与


GetScreenSize#

ウィンドウが存在する画面のサイズを取得

宣言#

namespace MGL::System
{
    class Window
    {
        [[nodiscard]] ScreenSize GetScreenSize() const noexcept;
    };
}

戻り値#

MGL::System::ScreenSize

ウィンドウが存在しているスクリーンのサイズ

説明#

ウィンドウが存在しているスクリーンの詳細なサイズ情報を取得します。

取得可能な情報の詳細はMGL::System::ScreenSizeを参照してください。

利用例#

スクリーン情報を取得して表示する例
auto screenSize = MGL::System::Window().GetScreenSize();

MGL_TRACE("物理解像度: %.0f x %.0f", screenSize.physicalSize.x, screenSize.physicalSize.y);
MGL_TRACE("論理解像度: %.0f x %.0f", screenSize.logicalSize.x, screenSize.logicalSize.y);
MGL_TRACE("内部解像度: %.0f x %.0f", screenSize.backingSize.x, screenSize.backingSize.y);
実行結果 (macOSにおいて、3840 x 2160ディスプレイ使用時に論理解像度2560 x 1440を設定した場合)
物理解像度: 3840 x 2160
論理解像度: 2560 x 1440
内部解像度: 5120 x 2880

バージョン情報#

MGL 1.0.0
  • 初回リリース

MGL 1.1.13
  • 関数の戻り値に[[nodiscard]]属性を付与

関連#