トップページ > 記事閲覧
変換、無変換キーの状態が取得できない
名前:くろよん 日時: 2014/11/10 00:19

DxLibVer 3.13(3.11)で 変換キーや無変換、PauseやInsertなど一部キー状態が GetHitKeyStateAll や CheckHitKey で取得できませんでした。 DirectInputを直接叩くと正常に取得できたのですが、これらキーはGetHitKeyStateAllでは取得できないのですか?
メンテ

Page: 1 |

Re: 変換、無変換キーの状態が取得できない ( No.1 )
名前:管理人 日時:2014/11/10 03:03

WindowsVista 以降ではキーの押下状態の取得に DirectInput を使用すると色々不具合があったので、 初期状態では CheckHitKey などは普通のAPI( GetKeyboardState )を使用して押下状態を取得するようになっています ( ただ、どのような不具合だったかはちょっと失念してしまいました、すみません・・・ ) DxLib_Init の前に SetUseDirectInputFlag( TRUE ) ; という記述を増やすことでキーの押下状態の 取得に DirectInput を使用するようになりますので、よろしければお使いください m(_ _)m
メンテ
Re: 変換、無変換キーの状態が取得できない ( No.2 )
名前:くろよん 日時:2014/11/16 21:52

無事に取得できるようになりました。 ありがとうございます! ただ切り替えたあとに、キーの状態を更新したときにボタンが押しっぱなしになるような症状がでてしまいました。 おそらくこちらのプログラムの書き方の問題だと思います。
メンテ
Re: 変換、無変換キーの状態が取得できない ( No.3 )
名前:管理人 日時:2014/11/17 03:05

> キーの状態を更新したときにボタンが押しっぱなしになるような症状がでてしまいました。 くろよんさんのプログラムが原因ではなく、もしかしたら Vista 以降でキーボードの キーの押下状態の取得に DirectInput を使用するのを止めた理由である不具合が原因かもしれません
メンテ
Re: 変換、無変換キーの状態が取得できない ( No.4 )
名前:くろよん 日時:2014/11/21 07:49

なるほどです、、難しいですね 少し気になったのでwin32APIの BOOL WINAPI GetKeyboardState( _Out_ PBYTE lpKeyState ); を直接呼出してみました。 この時は無変換キーを含めたキーボードの状態を取得することができました。 DxLibの問題ではなく環境依存なのでしょうか?
メンテ
Re: 変換、無変換キーの状態が取得できない ( No.5 )
名前:管理人 日時:2014/11/23 02:12

ご指摘ありがとうございます、すみません、DXライブラリの問題でした orz DXライブラリでは DirectInput を使用しない場合、GetKeyboardState で取得できる キーの押下状態を DirectInput のキーIDに置き換えて使用しているのですが ( DirectInput のキーID と GetKeyboardState のキーIDが異なるため )、 その置き換えテーブルの中に無変換キーや変換キーなど、一部のキーがありませんでした 修正版をアップしましたので、よろしければダウンロードしてください m(_ _;m http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe // VisualC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe // BorlandC++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_DevCppTest.exe // Dev-C++ 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibGCC_MinGWTest.exe // MinGW 用 http://homepage2.nifty.com/natupaji/DxLib/DxLibDotNet.zip // .NET用 http://homepage2.nifty.com/natupaji/DxLib/DxLibMakeTest.exe // ソース (中身を既存のライブラリのファイルに上書きして、BCCをお使いの 場合は『再構築』を、VCをお使いの場合は『リビルド』を、 Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい) こちらのバージョンでは、DxLib_Init の前に SetUseDirectInputFlag( TRUE ) ; の記述が 無くても変換キーや無変換キーの状態を取得できます、よろしければお試しください
メンテ
Re: 変換、無変換キーの状態が取得できない ( No.6 )
名前:くろよん(解決) 日時:2014/11/25 22:55

修正版で無事にキー取得することができました! 対応ありがとうございます。
メンテ

Page: 1 |

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

   クッキー保存