マウス入力について

キーの入力時間を取得する際に作った関数を作り変えることで、マウス入力の関数も作成できる
この関数は、マウスの座標と左右クリックしているフレーム数を用意した変数に代入して取得する。

#include <DxLib.h>

//マウス座標、左右クリックの入力を取得
int mousex, mousey, clickL, clickR;

void MouseUpdate()
{
    SetMouseDispFlag(TRUE);

    //マウスカーソルの座標位置を変数に代入
    GetMousePoint(&mousex, &mousey);

    int Mouse = GetMouseInput();

    //左クリックしているフレーム数を変数に代入
    if ((Mouse & MOUSE_INPUT_LEFT) != 0)
    {
        clickL++;
    }
    else
    {
        clickL = 0;
    }

    //右クリックしているフレーム数を変数に代入
    if ((Mouse & MOUSE_INPUT_RIGHT) != 0)
    {
        clickR++;
    }
    else
    {
        clickR = 0;
    }
}

main.cpp

#include <DxLib.h>

//マウス座標、左右クリックの入力を取得
int mousex, mousey, clickL, clickR;

void MouseUpdate()
{
    SetMouseDispFlag(TRUE);

    //マウスカーソルの座標位置を変数に代入
    GetMousePoint(&mousex, &mousey);

    int Mouse = GetMouseInput();

    //左クリックしているフレーム数を変数に代入
    if ((Mouse & MOUSE_INPUT_LEFT) != 0)
    {
        clickL++;
    }
    else
    {
        clickL = 0;
    }

    //右クリックしているフレーム数を変数に代入
    if ((Mouse & MOUSE_INPUT_RIGHT) != 0)
    {
        clickR++;
    }
    else
    {
        clickR = 0;
    }
}

int WINAPI WinMain( HINSTANCE hInstance , HINSTANCE hPrevInstance , LPSTR lpCmdLine , int nCmdShow )
{
    ChangeWindowMode( TRUE );//非全画面にセット
    SetGraphMode( 800 , 600 , 32 );//画面サイズ指定
    SetOutApplicationLogValidFlag( FALSE ) ;//Log.txtを生成しないように設定
    if(DxLib_Init() == 1){return -1;}//初期化に失敗時にエラーを吐かせて終了

    while( ProcessMessage()==0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
    {
        MouseUpdate();

        ClearDrawScreen();//裏画面消す
        SetDrawScreen(DX_SCREEN_BACK);//描画先を裏画面に

        //左右クリックしているフレーム数を表示
        DrawFormatString(10, 10, GetColor(255, 255, 255), "左クリック時間:%d", clickL);
        DrawFormatString(10, 30, GetColor(255, 255, 255), "右クリック時間:%d", clickR);

        //マウスカーソルの座標位置に円を表示
        DrawCircle(mousex, mousey, 16, GetColor(0, 0, 255), TRUE);

        //マウスがウィンドウの左右に出ないようにする
        if (mousex < 0)
        {
            SetMousePoint(0, mousey);
        }
        if (mousex > 800)
        {
            SetMousePoint(800, mousey);
        }

        ScreenFlip();
    }

    DxLib_End();
    return 0;
}

SetMouseDispFlag(int DispFlag);

マウスカーソルの表示設定を行う。DispFlagにTRUEを渡すと表示され、FALSEを渡すと表示されなくなる。
デフォルトではフルスクリーンの場合はFALSE、ウィンドウの場合はTRUEに設定されており、表示を変更したい時にこの関数を使う。

GetMousePoint(int *XBuf, int *YBuf);

マウスカーソルの位置を取得する。
XBufとYBufの部分にint型の変数を引数として指定することで、前者はマウスカーソルのX座標、後者はマウスカーソルのY座標をint型の変数に代入できる。

GetMouseInput(void);

マウスのボタンの状態を取得する。
ボタンごとに用意された定義値とAND演算し、結果が0ではない時に定義値に対応するボタンが押されていることになる。

SetMousePoint(int PointX, int PointY);

マウスカーソルの位置を指定した座標(PointX, PoinY)の位置へ強制的に移動する。
マウスが画面外へ飛び出さないようにするのに使えるが、常にマウスカーソルの位置を画面内に固定してしまうと、ウィンドウ右上の閉じるボタンなどが押せなくなることに注意。

その他

上記以外にもマウス入力関連関数には、マウスのクリック履歴を取得するGetMouseInputLogやマウスホイールの回転量を得るGetMouseWheelRotVolなどが存在する。
また、GetMouseInputでAND演算する定義値には、中クリックや4つ目以降のボタンに対応するものも存在する。
いずれもDXライブラリ公式サイトの関数リファレンスページに記載されているので、興味があればそちらを参考にするといいだろう。