キー入力処理のところでうまくいきません
GetHitKeyStateAll関数を使って配列に格納した値を元にキャラクターを上下左右に動かしたいのですが
おかしなことにZキーやXキーなどは認識するのに方向キーやHome,Insertキーなど一部のキーが反応してくれません
ためしに上下左右の移動をaswdなどのアルファベットのキーに割り当てたらきちんと動作しました
どこか記述を間違ってしまったのでしょうか?アドバイスをお願いします
ソースコードは数が多いので関係がありそうなメイン関数(main.cpp)とキー入力処理に関する部分(key.cpp)とキャラクタに関する部分(char.cpp)だけ貼っておきますが
基本的に龍神録プログラミングのページの解説どおりに作っています(変数や配列の名前だけは変えたりしていますが・・・
<main.cpp>
#define GLOBAL_INSTANCE
#include "../include/GV.h"
int ProcessLoop(){
if(ProcessMessage()!=0) return -1;
if(ClearDrawScreen()!=0) return -1;
GetHitKeyFrameAll();
return 0;
}
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE); //ウィンドウモード処理
if(DxLib_Init()==-1 || SetDrawScreen(DX_SCREEN_BACK)!=0) return -1; //初期化と裏画面処理
load(); //データロード
while(ProcessLoop()!=-1){//メインループ
switch(func_state){
case 0:
load(); //データのロード
first_ini(); //初回の初期化
func_state=100;
break;
case 100:
calc_ch(); //キャラクタ情報計算
graph_main(); //描画メイン
break;
default:
printfDx("不明なfunc_state\n");
break;
}
if(CheckKeyFrame(KEY_INPUT_ESCAPE)==1)break; //ESCキーで終了
ScreenFlip(); //裏画面反映
}
DxLib_End();
return 0;
}
#include "../include/GV.h"
int KeyFrame[256]; //各キーの押下されているフレーム数を格納
//GetHitKeyFrameAll関数
//引数で与えた配列KeyFrame[]にすべてのキーのフレーム数を格納する関数
int GetHitKeyFrameAll(){
char KeyState[256];
GetHitKeyStateAll(KeyState);
for(int i=0;i<256;i++){
if(KeyState[i]==1)KeyFrame[i]++;
else KeyFrame[i]=0;
}
return 0;
}
//CheckKeyFrame関数
//引数で与えたキーコードのキーフレーム数を取得
int CheckKeyFrame(char Handle){
return KeyFrame[Handle];
}