ゲーム作りで学ぶ! 実践的C言語プログラミング > 第1部 DXライブラリの基礎 > 第4章 入力関係処理の基礎 > マウスボタンの状態の取得


[Prev] [Next] [Up] [Contents][フレーム表示] [フレーム解除

マウスボタンの状態の取得 応援する 

マウスのどのボタンが押されたかどうかを判定するには, 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;
}

このプログラムの実行結果は下図となります.


[Prev] [Next] [Up] [Contents][フレーム表示] [フレーム解除

このサイトについて|ヘルプ|Q&A|個人情報保護|プライバシーポリシー|利用規約|コメント・トラックバック規約|削除規程|広告掲載
Copyright (c) 2005-2007 Time Intermedia Corporation