DXライブラリでマウスを使ったプログラムについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
マルマルエッグ

DXライブラリでマウスを使ったプログラムについて

#1

投稿記事 by マルマルエッグ » 10年前

DXライブラリでマウスを操作して左ボタンが押されたときに文字が表示されるようにしたいのですが
このソースだと押したあとはずっと表示されるようになってしまいます。
どのようにしたら押したときだけ文字が表示されるようにすることができるでしょうか?
回答よろしくお願いします


コード:

 
#include "DxLIb.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
         LPSTR lpCmdLine, int nCmdShow )
{            int MouseInput ;

	int Mouse;

    if( DxLib_Init() == -1 )    // DXライブラリ初期化処理
    {
         return -1;    // エラーが起きたら直ちに終了
    }

    
    SetMouseDispFlag( TRUE ) ;	// マウスを表示状態にする
    
    while( 1 ){
		Mouse = GetMouseInput();
                if( CheckHitKey(KEY_INPUT_ESCAPE) == 1 )
		{
                        break;  //エスケープキーを押したらループを抜ける
                }
		if( Mouse & MOUSE_INPUT_LEFT )
		{ 
                        DrawString( 0, 0, "左ボタンが押されています", GetColor(255,255,255) ); 	//マウスの左ボタンが押されていたら表示する
		}	
        }
	DxLib_End() ;   // DXライブラリ終了処理
        return 0 ;
}


Rittai_3D
記事: 525
登録日時: 11年前

Re: DXライブラリでマウスを使ったプログラムについて

#2

投稿記事 by Rittai_3D » 10年前

http://homepage2.nifty.com/natupaji/DxL ... .html#R5N8
Dxライブラリでマウス関係は使ったことないですが、上のリファレンスのサンプルコードを参考にすればいいと思います。
もしくは、マウスの入力フラグを使えばいいと思います。

#追記
サンプルコードではなくて例というところでした。サンプルコードには書いていませんね。
初心者です

アバター
沖 滉均
記事: 237
登録日時: 13年前
住所: K県F市

Re: DXライブラリでマウスを使ったプログラムについて

#3

投稿記事 by 沖 滉均 » 10年前

2.9章 全てのキーの入力状態を取得する
上記はキーの状態を監視するものですけども、こちらを参考にマウスの左ボタンが押されているフレーム数を記録するようにして
押された瞬間を判定すれば良いのではないでしょうか?
There is no royal road to learning.
codeタグで指定できる言語
画像

non
記事: 1097
登録日時: 13年前

Re: DXライブラリでマウスを使ったプログラムについて

#4

投稿記事 by non » 10年前

押された瞬間を知るには、1個前の状態と比べて変化をみます。
サンプルを作りました。

コード:

#include "DxLib.h"

int check_mouseDownLeft(void)
{
	int ret=0;
	static int mouseInputStateOld=0;
	int mouseInputState=GetMouseInput();
	if(mouseInputStateOld != mouseInputState)
		if(mouseInputState & MOUSE_INPUT_LEFT)
			ret=1;
		else
			ret=0;
	else
		ret=0;

	mouseInputStateOld = mouseInputState;
	return ret;
}

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,  LPSTR lpCmdLine, int nCmdShow )
{            int MouseInput ;
 
    int Mouse;
	ChangeWindowMode( TRUE ) ;


    if( DxLib_Init() == -1 )    // DXライブラリ初期化処理
    {
         return -1;    // エラーが起きたら直ちに終了
    }
 
    
    SetMouseDispFlag( TRUE ) ;  // マウスを表示状態にする
    
    while( !ProcessMessage() ){

        Mouse = GetMouseInput();
        if( CheckHitKey(KEY_INPUT_ESCAPE) == 1 )
        {
			break;  //エスケープキーを押したらループを抜ける
        }
        if(  check_mouseDownLeft() )
        { 
			int XBuf,YBuf;
			GetMousePoint( &XBuf, &YBuf );
			ClearDrawScreen() ;
			DrawFormatString( 0, 0, GetColor(255,255,255), "左ボタンが押されています %d  %d",XBuf,YBuf );  //マウスの左ボタンが押されていたら表示する
        }   
    }
    DxLib_End() ;   // DXライブラリ終了処理
    return 0 ;
}
non

naohiro19
記事: 256
登録日時: 13年前
住所: 愛知県

Re: DXライブラリでマウスを使ったプログラムについて

#5

投稿記事 by naohiro19 » 10年前

樹になった点だけ書いておきますね。
  • SetDrawScreen(DX_SCREEN_BACK);の行がない。
  • ClearDrawScreen()、ScreenFlip()の行がない。

non
記事: 1097
登録日時: 13年前

Re: DXライブラリでマウスを使ったプログラムについて

#6

投稿記事 by non » 10年前

naohiro19 さんが書きました:樹になった点だけ書いておきますね。
  • SetDrawScreen(DX_SCREEN_BACK);の行がない。
  • ClearDrawScreen()、ScreenFlip()の行がない。
私のプログラムに対してでしょうか?
つけていないのは、本質に関係ないからです。
non

マルマルエッグ

Re: DXライブラリでマウスを使ったプログラムについて

#7

投稿記事 by マルマルエッグ » 10年前

みなさん回答ありがとうございます。
紹介させてもらったサイトとnonさんのサンプルコードを参考に作らせてもらいます。

閉鎖

“C言語何でも質問掲示板” へ戻る