ページ 1 / 1
GetHitKeyStateAllに構造体の配列を渡す。
Posted: 2009年12月29日(火) 00:08
by 道
GetHitKeyStateAllに構造体で作った配列を渡したいのですが上手くいきません。
// キー用
typedef struct{
char Key;
char pulKey;
char trgKey;
}KEY;
KEY Key[256];
GetHitKeyStateAll(&Key.Key);
上記だとエラーが出ます。
下記だとエラーは出ないのですがうまくいってないみたいです。
構造体を渡すことはできないのでしょうか。
GetHitKeyStateAll(Key[0].Key);
Re:GetHitKeyStateAllに構造体の配列を渡す。
Posted: 2009年12月29日(火) 01:03
by circle
GetHitKeyStateAll関数の引数には、char型のポインタしか渡せません。
もしその構造体の配列を渡すなら、自作でKEY構造体の配列を受け取れるGetHitKeyStateAll関数を、
つくるしかないでしょう。
ここの管理人Dixq様の作った GetHitKeyStateAll_2関数 を参考にされてはいかがでしょうか?
「キーがどれ位押されたか」を判定する関数
↓
http://dixq.net/g/41.html
Re:GetHitKeyStateAllに構造体の配列を渡す。
Posted: 2009年12月29日(火) 01:42
by 道
ご回答ありがとう御座います。
そうなんですか・・・。
上記の関数でも作りましたが自分用に変換しております。
キーが押された瞬間だけをとるtrgに値を入れたいのですが
下記がソースではずっと1が入ってしまいます。
なぜなのでしょうか・・・。
typedef struct{
bool Flg;
char Key;
char pulKey;
char trgKey;
}KEY;
Key Key[256];
char key[256];
// キーの情報の取得
void SetKey(void){
static char key[256];
// キー入力の取得
GetHitKeyStateAll(key);
for(int i=0; i<256; i++){
Key.Key = key;
if(Key.Key){
if(Key.Flg == false) Key.trgKey = !Key.trgKey;
Key.Flg = true;
}else{
Key.trgKey = 0;
Key.Flg = false;
}
}
}
Re:GetHitKeyStateAllに構造体の配列を渡す。
Posted: 2009年12月29日(火) 02:41
by circle
とりあえず
押したフレームだけ反応する様にいじってみた。
void SetKey(void){
static char key[256];
// キー入力の取得
GetHitKeyStateAll(key);
for(int i=0; i<256; i++){
Key.Key = key;
if(Key.Key){
if(Key.Flg == false){
Key.trgKey = true;
Key.Flg = true;
} else {
Key.trgKey = false;
}
}else{
Key.trgKey = 0;
Key.Flg = false;
}
}
}
なんかスマートじゃないけど・・・
Re:GetHitKeyStateAllに構造体の配列を渡す。
Posted: 2009年12月29日(火) 03:07
by 道
できました。
深夜でしたのに回答ありがとうございます。
本当に助かりました。