マウスのどのボタンが押されたかどうかを判定するには,
GetMouseInput関数を利用します.
この関数の定義は以下のようになっています.
int GetMouseInput( void );
戻り値にはマウスの入力状態が入っています.
どのボタンが押されているかは,
下表の値とのAND演算を行い,結果が0でなければ
ボタンが押されていると判定することができます.
定義値
| マウスボタン
|
MOUSE_INPUT_LEFT
| マウス左ボタン
|
MOUSE_INPUT_RIGHT
| マウス右ボタン
|
MOUSE_INPUT_MIDDLE
| マウス中央ボタン
|
例えば,マウス左ボタンが押されているかを調べるには,
GetMouseInput関数の戻り値とMOUSE_INPUT_LEFTとのAND演算を
行えばよいわけです.
if( ( GetMouseInput() & MOUSE_INPUT_LEFT ) != 0 ) {
//左クリック時の処理
}
では,前節のプログラムを改良して,
左クリック時に文字列を表示するプログラムを作成してみましょう.
foundation-16.cpp
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int white, posX, posY;
//ウィンドウモードで起動
ChangeWindowMode( TRUE );
//DXライブラリ初期化
if( DxLib_Init() == -1 ) {
return -1;
}
SetDrawScreen( DX_SCREEN_BACK );
//マウスを表示状態にする
SetMouseDispFlag( TRUE );
//白色取得
white = GetColor( 255, 255, 255 );
//ESCAPEキーが押されるまでプログラムを続行
while( CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) {
ClearDrawScreen();
if( ProcessMessage() == -1 ) {
break;
}
//マウスポインタの座標を取得
GetMousePoint( &posX, &posY );
//座標を表示
DrawFormatString( 20, 20, white, "マウスの座標( %d, %d )", posX, posY );
//マウス左ボタンが押されているかどうか
if( (GetMouseInput() & MOUSE_INPUT_LEFT ) != 0 ) {
DrawString( 20, 50, "マウス左ボタンが押されています", white );
}
//裏画面反映
ScreenFlip();
}
//DXライブラリ終了処理
DxLib_End();
return 0;
}
このプログラムの実行結果は下図となります.