トップページ > 過去ログ > 記事閲覧
一度きりのマウスカーソル座標取得
名前:津田 日時: 2012/11/03 20:06

SQLite3を導入する事でDXライブラリを活用して画像によるインターフェースを持った 家計簿ソフトの製作途上なのですが、 Scaseに当たる値を引数として呼び出し、クリックしたアイコンによって適用する処理が変わるプログラムなのですが、 以下のソースコードでコンパイルは通るのですが(strcpyの警告はあるがデバッグでは問題なく機能します)、 2度目の参照をした際に、MouseX、MouseY共に1度目の入力の際のマウス座標から変化しないという、タイトルどおり、「一度きりの座標取得」となり、 Scaseという形で操作ルーチンを変化させる事ができません。 不心得者故にいきあたりばったりでこの掲示板を見ながら改変していったのでかなり雑ですが、何かお気づきの点がございましたら御教授お願いいたします。 //現環境 OS: Windows Vista Home IDE:Microsoft Visual C++ 2010 DXライブラリ:最新版 ///今までの対処 @サンプルプログラムどおり、『while( CheckHitKeyAll() == 0 ) 〜』によるループで座標を取る >MouseX,MouseYが初期化されていないとしてエラー AScaseではなく単純に2つのオブジェクトとして分割 >変化なし B『SetUseDirectInputFlag( FALSE );』『DxLib_Init()』等をプログラム開始部に入れて初期化を図る >変化なし ////////////////// //インクルードファイル 適当にぶち込んだ初心者丸出しの投げっぱなし #include <tchar.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <iostream> //追加ファイル #include "sqlite3.h" #include "DxLib.h" //ヘッダーファイル #include "hensuu.h" //categoryを定義 int inputcategory(int Scase){ int MouseX=0; int MouseY=0; int Button=0; // // 入力履歴消去 SetUseDirectInputFlag( FALSE ); // マウスを表示状態にする SetMouseDispFlag( TRUE ) ; // キーが押されるまでループ while( GetMouseInputLog(&Button, &MouseX,&MouseY,FALSE) != 0 ) { // メッセージ処理 if( ProcessMessage() == -1 ) { break ; // エラーが起きたらループを抜ける } } /*クリック位置検索*/ if(10<MouseY && MouseY<44){ if((10+47*0)<MouseX && MouseX<(44+47*0)){ if(Scase==1){ strcpy(category,"食費"); }else if(Scase == 2){ sqlwrite(); } } } return 0; }

Page: 1 |

Re: 一度きりのマウスカーソル座標取得 ( No.1 )
名前:いっち 日時:2012/11/03 23:01

GetMouseInputLog の第4引数を TRUE にすれば良いのではないでしょうか?

Page: 1 |