管理人様
いつも楽しくDXライブラリを利用させていただいています(^^)
GetHitKeyStateAllについて、
仕様なのか不具合なのか分かりませんので報告させていただきます。
■DXライブラリのバージョン
3.24c ↓こちらのスレッドにあげてくださっているテスト版です
ttps://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=5492
■環境
Windows10 Pro
Visual Studio 2017 Community
■事象
GetHitKeyStateAllについて、「半角/全角」キーのみ挙動が異なります。
・「半角/全角」キーを、一度押すと、常に押しっぱなしの判定となります。次に押すまで離したことになりません。
・「半角/全角」キー以外については、押した/押されていないが正しく判定されます。
■再現ソース
#include <DxLib.h>
// WinMain 関数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
// ウインドウモードで起動
DxLib::ChangeWindowMode(TRUE);
// ウインドウサイズ
DxLib::SetWindowSize(640, 480);
// DXライブラリの初期化
if (DxLib::DxLib_Init() != 0) { return -1; }
// 裏画面設定
DxLib::SetDrawScreen(DX_SCREEN_BACK);
// キー入力用のバッファ
char Buf[256];
// メインループ
while (DxLib::ProcessMessage() == 0 && DxLib::CheckHitKey(KEY_INPUT_ESCAPE) == 0)
{
// 画面クリア
DxLib::ClearDrawScreen();
// 全てのキーの入力状態を得ます
if (DxLib::GetHitKeyStateAll(Buf) == -1) { return -1; }
// いずれかのキーが押下されているかチェック
for (int i = 0; i < 256; ++i)
{
if (Buf[i] == 1)
{
// 押していればメッセージ表示(※離すとメッセージは消えるはず)
DxLib::DrawString(0, 0, "いずれかのキーが押されたよ。", DxLib::GetColor(255, 255, 255));
}
}
// 画面フリップ
DxLib::ScreenFlip();
// 適当なウェイト
::Sleep(16);
}
// DXライブラリの後始末
DxLib::DxLib_End();
// ソフトの終了
return 0;
}