Re: ^キーの入力を受け付けない? ( No.1 ) |
- 名前:クラスクラス 日時:2011/05/31 11:32
こちらでは、下記プログラムで問題なくキー入力できました。
お試しください。
キーを押している間表示されます。
複数キーを押すと、重ねて表示されます。
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
ChangeWindowMode( true );
char KeyBuf[ 256 ] ;
char wstr[ 500 ];
// DXライブラリ初期化処理
if( DxLib_Init() == -1 ) return -1;
SetSysCommandOffFlag( TRUE ) ;
// 無限ループ
while( 1 )
{
// Windows 依存のメッセージ処理を行う
if( ProcessMessage() == -1 ) break ;
ClearDrawScreen() ;
// すべてのキーの状態を得る
GetHitKeyStateAll( KeyBuf ) ;
for(int i=0;i<256;i++) {
if(KeyBuf[ i ] != 0) {
sprintf_s(wstr,490,"きーNO %d の状態 = %d",i,KeyBuf[ i ]);
DrawString( 0 , 20 , wstr, GetColor( 255 , 255 , 255 ) ) ;
}
}
// 裏画面の内容を表画面に反映させる
ScreenFlip() ;
}
// DXライブラリ使用の終了処理
DxLib_End() ;
// ソフトの終了
return 0 ;
}
|
Re: ^キーの入力を受け付けない? ( No.2 ) |
- 名前:イトケン 日時:2011/05/31 18:01
クラスクラスさん、返信ありがとうございます。
上記プラグラムで実行してみました。
こちらの環境では、^キーを入力しても何も表示されなかったです。
ちなみにOSはWindows7です。
WindowsXPの頃は、DxLibで作ったプログラムは、^キーは使用できてました。
今後キーボードを変えて、調べてみます。
|
Re: ^キーの入力を受け付けない? ( No.3 ) |
- 名前:いっち 日時:2011/05/31 19:49
DxLib_Init の前で SetUseDirectInputFlag を TRUE に設定した場合どのような動作になりますでしょうか?
|
Re: ^キーの入力を受け付けない? ( No.4 ) |
- 名前:イトケン 日時:2011/06/01 06:26
いっちさん、返信ありがとうございます。
SetUseDirectInputFlagをTRUEにしたら、\キーを取得することができました。
解決できました。
ありがとうございます。
|
Re: ^キーの入力を受け付けない? ( No.5 ) |
- 名前:いっち 日時:2011/06/01 12:59
あれ?\キー?^キー?
どちらにしても SetUseDirectInputFlag が FALSE の場合だけ特定のキーが取得できないというのであれば、
それはちょっとバグっぽいので、管理人さんの見解をお待ちいただくのが宜しいかと思います。
|
管理人さんへ ( No.6 ) |
- 名前:イトケン(解決 管理人さんへ) 日時:2011/06/02 05:17
すみません。\キーではなく、^キーが取得できないです。
無事、そのコードを入力して解決しました。
管理人さんへ いちおう原因特定のお助けになれればいいかなと思いまして、状況をお伝えします。
2007年ぐらいのDXライブラリで作っていたゲームプログラムでしたが、その頃は、問題なく^キーは取得できてました。
ちなみに当初の環境は
OS:WindowsXP
DirectX:覚えてないですが、9だったと思います。
開発言語:VC++6.0
でした。
今の環境
OS:Windows7
DirectX:11
開発言語:VC++2005
に変わってから、そのゲームプログラムは動作できなくて(画面がちらつく、動作が異常に遅い等)DXライブラリを最新のDirectX9版に変えました。
特にプログラムソースはいじってないです。
^キーが押される取得には、GetHitKeyStateAllで「KEY_INPUT_PREVTRACK」と判定してます。
そしたら、正常に動作するようになって、良かったのですが、^キーが反応しないなぁって気づきました。
以上、状況報告です。
|
Re: ^キーの入力を受け付けない? ( No.7 ) |
- 名前:管理人 日時:2011/06/04 22:25
ご報告ありがとうございます
すいません、Windows7 で SetUseDirectInputFlag( FALSE ) をしていないと
^キーの状態が取得できないのはDXライブラリのバグです
既に SetUseDirectInputFlag( FALSE ) を使うことで解決されていますが、
修正版をアップしましたので、もしご必要でしたらダウンロードしてください 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/DxLibGCCTest.exe // Gnu C++ 用
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』を、VCをお使いの場合は『リビルド』を、
Dev-C++をお使いの方は「Rebuild All(Ctrl+F11)」をして下さい)
|