トップページ > 過去ログ > 記事閲覧
KeyInputNumberについて
名前:お尋ね者 日時: 2009/11/29 00:16

スレ立て失礼します。 このたび「外貨計算ソフト」をDxLibを利用して作らせて頂いています。 しかしながら「KeyInputNumber」関数で数値入力をしようとしたところ、どうも一回目の「KeyInputNumber」関数よりEscキーを押さなければ先に進めなくなってしまいます。 以下にプログラム文を載せさせていただきます。 稚拙ですが、どうぞこの不具合の解決法をお教え頂きますようお願いします。 #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { if( DxLib_Init() == -1 && ProcessMessage()==-1) // DXライブラリ初期化処理 { return -1 ; // エラーが起きたら直ちに終了 } int rate,comission,start,White; double remainder,goal; //白色の宣言 White=GetColor(255,255,255); //取引額の設定 DrawFormatString(10,10,White,"取引額を入力してください"); start=KeyInputNumber(10,30,1000000000000000,0,TRUE); //レートの設定 DrawFormatString(10,50,White,"レートを入力してください"); rate=KeyInputNumber(10,70,10000000000000000000,0,TRUE); //手数料の計算 DrawFormatString(10,90,White,"手数料を入力してください"); comission=KeyInputNumber(10,110,1000000,0,TRUE); //計算 goal=(start - comission)/rate; //$ remainder=start- (rate*goal); //¥ //結果 DrawFormatString(10,150,White,"取引結果%f$,余り%d¥",goal,remainder); WaitKey() ; // キー入力待ち DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }

Page: 1 |

Re: KeyInputNumberについて ( No.1 )
名前:いっち 日時:2009/11/29 00:51

KeyInputNumber関数の第3引数にint型の範囲を超える値を指定しているため、 桁あふれが発生し、うまく動かないのではないでしょうか? おそらくマイナス値扱いになっていると思われます。 以下のようにすると、入力できました。 start=KeyInputNumber(10,30,0x7fffffff,0,TRUE); int型がとれる値の範囲は以下の通りです。 -2147483648〜2147483647
Re: KeyInputNumberについて ( No.2 )
名前:お尋ね者(解決済) 日時:2009/11/29 01:03

いっち様、ご回答ありがとうございます。 intの範囲を超えているるなんて迂闊でした。 改めましてありがとうございます。

Page: 1 |