トップページ > 過去ログ > 記事閲覧
CheckHitKeyAll()について
名前:hico 日時: 2011/05/19 22:37

CheckHitKeyAll()を2回入れた場合1回目は効きますが 2回目以降は押していないのに押したとみなされそのままスルーされてしまいます。 サンプルにあった「キー入力があるまで待つ」というものを一部変更して 1度キーを入力後1秒止まり(連続で押すというのを防ぐため) その後もう一度キーを押すと終了するようになっていると思うのですが、 1度キーを入力後、1秒たつと何も押さずに終了してしまいます。 どうすればいいでしょうか? Windows7 Visual C++ 2010 Express DXライブラリ Ver3.05 #include "DxLib.h" #include <windows.h> int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int Cr ; ChangeWindowMode(TRUE); if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } // 白色の値を取得 Cr = GetColor( 255 , 255 , 255 ) ; // 文字列の描画 DrawString( 200 , 240 - 32 , "キーを押してください" , Cr ); // キーの入力待ち while( CheckHitKeyAll() == 0 ) { // メッセージ処理 if( ProcessMessage() == -1 ) { break ; // エラーが発生したらループを抜ける } } Sleep(1000); while( CheckHitKeyAll() == 0 ) { // メッセージ処理 if( ProcessMessage() == -1 ) { break ; // エラーが発生したらループを抜ける } } DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 }

Page: 1 |

Re: CheckHitKeyAll()について ( No.1 )
名前:クラスクラス 日時:2011/05/20 00:47

サンプルソース、実行してみましたが。 こちらでは問題なく2回キー入力しましたよ。 ちなみに、キー押してすぐ離して、またキー押していますよね? 押しっぱなしにした場合は、2回目もキー入力中になって終了します。それが正しい仕様です。 ひょっとして、何か誤解してませんか?
Re: CheckHitKeyAll()について ( No.2 )
名前:hico 日時:2011/05/20 01:40

いえ、押しっぱなしにはしていないです。 押す→離す-一秒たつ→終了となります。 また友人の環境でもこの現象が発生しています。 追記 念のためもう一度しましたが、 クリックのときは1度で終了 キーボードのときも1度で終了でしたが ジョイパッドのときは2回押して正常に動きました。 なにか条件があるのでしょうか?
Re: CheckHitKeyAll()について ( No.3 )
名前:クラスクラス 日時:2011/05/20 14:54

そうですか…、当方はディストップもノートも問題なく動作するので、原因はちょっと不明ですね。 現象が出ないと、原因も見れないので、他の方の動作報告やレス待ちかな〜
Re: CheckHitKeyAll()について ( No.4 )
名前:いっち 日時:2011/05/20 18:30

私の環境(XP)でも再現しません。 DxLib_Init の前で SetUseDirectInputFlag に TRUE を設定してみたり、 CheckHitKeyAll と CheckHitKeyAll の間に ProcessMessage をかませてみた場合はどのような動作になりますか?
Re: CheckHitKeyAll()について ( No.5 )
名前:hico(解決) 日時:2011/05/20 23:15

DxLib_Initの前にSetUseDirectInputFlag(TRUE)を挿入すると正常に動作しました。 SetUseDirectInputFlagについてこちらの掲示板で調べてみたところ どうやらVista以降の環境ではDirect Inputを強制的に使用しない設定に なっているらしくこの文の記述が必要なようです。 一応URLを載せておきます。 tp://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=1665 みなさんありがとうございました。
Re: CheckHitKeyAll()について ( No.6 )
名前:いっち 日時:2011/05/20 23:43

参考までに「CheckHitKeyAll と CheckHitKeyAll の間に ProcessMessage をかませてみた場合」はどのような挙動になるか教えていただけますか?
Re: CheckHitKeyAll()について ( No.7 )
名前:hico(解決) 日時:2011/05/21 18:33

2つのwhile文の間にProcessMessageを入れたところ正常動作を確認しました ただもう一つ新しく同様のwhile文を入れたところクリック回数は2回 つまり正常動作しませんでした 知らなかったのですが ProcessMessageはその都度入れたほうがいいのですね 色々と助けていただきありがとうございました

Page: 1 |