トップページ > 記事閲覧
GetHitKeyStateAllと「半角/全角」キー
名前:Ketty 日時: 2023/06/22 11:47

管理人様 いつも楽しく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; }
メンテ

Page: 1 |

Re: GetHitKeyStateAllと「半角/全角」キー ( No.1 )
名前:管理人 日時:2023/06/22 22:12

> ・「半角/全角」キーを、一度押すと、常に押しっぱなしの判定となります。次に押すまで離したことになりません。 すみません、こちらは仕様となります ( Direct Input や Windows API から取得できる値自体がそのようになっていますので、 DXライブラリではどうにもできない形です ) 「半角/全角」キーはソフト中では使用しないようにしてください m(_ _)m
メンテ
Re: GetHitKeyStateAllと「半角/全角」キー(解決) ( No.2 )
名前:Ketty(解決) 日時:2023/06/23 12:55

管理人様 素早いお返事ありがとうございましたm(_ _)m 仕様ということで承知しました。 解決とさせていただきます。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存