マウス入力について
キーの入力時間を取得する際に作った関数を作り変えることで、マウス入力の関数も作成できる
この関数は、マウスの座標と左右クリックしているフレーム数を用意した変数に代入して取得する。
#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ライブラリ公式サイトの関数リファレンスページに記載されているので、興味があればそちらを参考にするといいだろう。