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
いろいろ考えた結果、メッセージをフックすることにしました。
ありがとうございました。
|