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
修正版で無事にキー取得することができました!
対応ありがとうございます。
|