トップページ > 過去ログ > 記事閲覧
『何のキーが押されたか』を知る方法
名前:たろう 日時: 2010/07/31 22:20

はじめまして。 キー入力関連で困ったので質問します。 CheckHitKey関数で『今このキーが押されているか』という情報を得ることはできるのですが、 『何のキーが押されたか』という情報を得たい場合はどうすればいいでしょうか? よろしくお願いします。

Page: 1 |

Re: 『何のキーが押されたか』を知る方法 ( No.1 )
名前:T 日時:2010/07/31 22:40

GetHitKeyStateAll関数を使えば可能です
Re: 『何のキーが押されたか』を知る方法 ( No.2 )
名前:たろう 日時:2010/07/31 22:46

説明が足りませんでした。 キーが押された順番も取得したいです。 できればGetInputCharみたいな感じで取得したいんですが無理でしょうか?
Re: 『何のキーが押されたか』を知る方法 ( No.3 )
名前:T 日時:2010/08/01 00:12

かなりやっつけで、エラー等あるかもしれませんがこんな感じでしょうか int GetHitKey_Order( char *Order, int Number ) { char Buf[256]; // 最新の入力情報 static char OldBuf[256] = ""; // 1フレーム前の入力情報 int i; GetHitKeyStateAll( Buf ); // 現在と1フレーム前の入力情報を比較 for( i=0; i<256; i++ ) { // 前フレームで押されていなくて今押されているとき if( Buf[i] == 1 && OldBuf[i] == 0 ) { // Number個目の配列にキー情報を保存 Order[Number++] = i; } OldBuf[i] = Buf[i]; } return Number; } 先にOrderにあたる配列、Numberにあたる変数を用意しておく必要があります char Order[適宜] = ""; int Number = 0; OrderにはDXライブラリのキーコードが入力された順に配列に記録されます Numberは何番目まで記録されているかがカウントされます 返り値は更新されたNumberです Number = GetHitKey_Order( Order, Number );
Re: 『何のキーが押されたか』を知る方法 ( No.4 )
名前:たろう 日時:2010/08/01 10:10

わざわざありがとうございます。 実際に試してみて、当然といえば当然なのですが、同じフレーム中に2つのキーが同時に押されたときに、 実際に押された順番に関係なくキーコードの定義された順に配列に記録されるようです。 厳密にキーの押された順番を把握するのは無理でしょうか?
Re: 『何のキーが押されたか』を知る方法 ( No.5 )
名前:たろう 日時:2010/08/01 15:54

いろいろ考えた結果、メッセージをフックすることにしました。 ありがとうございました。

Page: 1 |