1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DXライブラリ学習のための下準備

Last updated at Posted at 2024-02-19

はじめに

開発効率を上げるためにはデバッグやテストのしやすさが重要です。ウィンドウモードでの作業はアプリケーションの動作を確認しながら、プログラムの変更をテストできるため大きなメリットがあります。この記事ではウィンドウモードへの切り替え方法と、アプリケーション終了後、すぐにウィンドウが閉じてしまう対策を紹介します。

関連記事

開発環境

  • Windows11
  • Visual Studio 2022
  • DXライブラリ Ver3.24d

ウィンドウモード

フルスクリーンモードはゲームを遊ぶのに適していますが、開発の初期段階ではデバッグ作業において不便を感じることがあります。ウィンドウモードなら複数のアプリケーションを同時に表示できるため、プログラムの修正と結果の確認を素早く行うことができます。まずはウィンドウ化をするためにChangeWindowMode関数を使います。

#include "DxLib.h"

int WINAPI WinMain( _In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpcmdLine, _In_ int nCmdShow )
{
    // ウィンドウモード
    ChangeWindowMode( TRUE );

    // DXライブラリの初期化
    if( DxLib_Init() == -1 )
    {
        // -1ならエラーとしてゲーム終了
        return 0;
    }

    // DXライブラリの破棄
    DxLib_End();

    return 0;
}

ChangeWindowMode関数の引数にTRUEを指定するとウィンドウモードになります(FALSEを指定するとフルスクリーンモード)また、この関数を呼び出さなかった場合はフルスクリーンモードで起動します。

ChangeWindowMode関数はDxLib_Init関数より先に呼び出すことをお勧めします。DxLib_Init関数の後でこの関数を呼び出すとアプリケーションが一度フルスクリーンモードで起動した後にウィンドウモードに切り替わるため、動作としてはやや不自然です。

プログラムの一時停止

現状では何か画面に表示されるプログラムを書いてもすぐに終了してしまうため、これもデバッグには不便です。以下のようにWaitKey関数を使うとプログラムを一時停止できるようになります。

#include "DxLib.h"

int WINAPI WinMain( _In_ HINSTANCE hInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR lpcmdLine, _In_ int nCmdShow )
{
    // ウィンドウモード
    ChangeWindowMode( TRUE );

    // DXライブラリの初期化
    if( DxLib_Init() == -1 )
    {
        // -1ならエラーとしてゲーム終了
        return 0;
    }

    // プログラムの一時停止
    WaitKey();

    // DXライブラリの破棄
    DxLib_End();

    return 0;
}

WaitKey関数は何か入力があるまでプログラムを一時停止します。これで実行結果を確認できるようになりました。

WaitKey関数はKeyという名前がついていますが、実際はマウスやコントローラーの入力にも反応します。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?