マウスの位置の監視
-
氷室ってかっこいい名前じゃね
マウスの位置の監視
マウスが指定された位置にくるとその部分が黄色の枠に囲まれるというプログラムを作っていますが、うまくいきません。
マウスの現在位置が取得できていないのでわと思い、左上で確認できるようにしたのですが、異常がありませんでした。
こうなってしまうともう僕にはお手上げです。
わかる方に教えていただきたいです。お願いします。
[hr]
#include "DxLib.h"
int Key[256];
typedef struct{
int x;
int y; //座標
int WheelRotVol;//ホイールの回転量
unsigned int Button[8]; //ボタンの押した状態
}Mouse_t;
Mouse_t Mouse;
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[]){
char GetHitKeyStateAll_Key[256];
GetHitKeyStateAll( GetHitKeyStateAll_Key );
for(int i=0;i<256;i++){
if(GetHitKeyStateAll_Key==1) GetHitKeyStateAll_InputKey++;
else GetHitKeyStateAll_InputKey=0;
}
return 0;
}
int GetHitMouseStateAll_2(Mouse_t *Nezumi){
if(GetMousePoint( &Nezumi->x, &Nezumi->y ) == -1){ //マウスの位置取得
return -1;
}
int MouseInput=GetMouseInput(); //マウスの押した状態取得
for(int i=0; i<8; i++){ //マウスのキーは最大8個まで確認出来る
if( (MouseInput & 1<<i ) != 0 ) Nezumi->Button++; //押されていたらカウントアップ
else Nezumi->Button = 0; //押されてなかったら0
}
Nezumi->WheelRotVol = GetMouseWheelRotVol() ; //ホイール回転量取得
return 0;
}
int flag;
void message_box(){
flag=MessageBox(
NULL ,
TEXT("フルスクリーンモードで起動しますか?") ,
TEXT("スクリーン設定") ,
MB_YESNO | MB_ICONQUESTION );
if(flag==IDYES)
ChangeWindowMode( FALSE );
else
ChangeWindowMode( TRUE );
}
int white=GetColor(255,255,255);
int yellow=GetColor(255,255,0);
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
message_box();
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
SetMouseDispFlag(TRUE);
int place=0;
int title=CreateFontToHandle("MS 明朝",40,4,DX_FONTTYPE_NORMAL);
while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && GetHitMouseStateAll_2(&Mouse)==0 && Key[KEY_INPUT_ESCAPE]==0){
//↑メッセージ処理 ↑画面をクリア ↑入力状態を保存 ↑ESCが押されていない
DrawFormatString(0,0,white,"座標[%d,%d],回転量:%d,",Mouse.x,Mouse.y,Mouse.WheelRotVol);
//タイトル画面
if(place==0){
DrawStringToHandle(130,160,"Battle",white,title);
DrawStringToHandle(210,210,"Create",white,title);
DrawStringToHandle(280,260,"Exit",white,title);
if(120<= Mouse.x <=520 && 155<= Mouse.y <=205){
DrawBox(120,155,520,205,yellow,0);
if(Mouse.Button[0]==1)
place=1;
}
else if(120<= Mouse.x <=520 && 205<= Mouse.y <=255){
DrawBox(120,205,520,255,yellow,0);
if(Mouse.Button[0]==1)
place=2;
}
else if(120<= Mouse.x <=520 && 255<= Mouse.y <=305){
DrawBox(120,255,520,305,yellow,0);
if(Mouse.Button[0]==1)
break;
}
}
ScreenFlip();
}
DxLib_End();
return 0;
}
[hr]
追伸:長い文になってしまい申し訳ございません。
Re: マウスの位置の監視
まずコードはcodeタグで囲んでいただけると嬉しいです。
これがダメですね。C言語の条件分岐は数学の条件とは違います。
正しくは、上から順に ですね。
if(120<= Mouse.x <=520 && 155<= Mouse.y <=205){
else if(120<= Mouse.x <=520 && 205<= Mouse.y <=255){
else if(120<= Mouse.x <=520 && 255<= Mouse.y <=305){正しくは、上から順に ですね。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
-
氷室ってかっこいい名前じゃね
Re:Re: マウスの位置の監視
ありがとうございました。無事直すことができました。
それに、コードの件についてはご忠告ありがとうございます。次からは、気を付けます。
それに、コードの件についてはご忠告ありがとうございます。次からは、気を付けます。