トップページ > 記事閲覧
ファンクションキー取得の不具合
名前:チップ 日時: 2016/09/15 15:36

いつもお世話になっております。 キー取得の挙動で不具合が出るので原因がわかりましたら教えて頂けないでしょうか? 下記のプログラムでファンクションキーのF1〜F12を押すとリアルタイムに それぞれに対応した四角が白くなるようになっているはずなのですが、 何故かF10だけ動作がおかしくなります。 反応はするのですが何故かトグルでON/OFFになるようでキーを離したことが検知されていないようです。 他のキーは大丈夫なので何故F10だけがそうなるのか原因がわかりません。 よろしくお願い致します。 以下プログラムです。 -------------------- #include <stdio.h> #include <stdlib.h> #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { ChangeWindowMode( TRUE ) ; // ウィンドウモードで起動 SetGraphMode( 640 , 480 , GetColorBitDepth() ) ; // 画面モードの変更 DxLib_Init(); // DXライブラリ初期化処理 SetDrawScreen( DX_SCREEN_BACK ) ; // グラフィックの描画先を裏画面にセット int i,x; char Buf[ 256 ] ; // システムメインループ while(!ProcessMessage()) { // Windowsの裏処理用 ClearDrawScreen() ; GetHitKeyStateAll(Buf) ; x=10; if(Buf[KEY_INPUT_F1]) i=TRUE; else i=FALSE; DrawBox(10+x,215,10+x+50,265, GetColor( 255 , 255 , 255 ) , i) ; // 四角形を描画 x+=50; if(Buf[KEY_INPUT_F2]) i=TRUE; else i=FALSE; DrawBox(10+x,215,10+x+50,265, GetColor( 255 , 255 , 255 ) , i) ; // 四角形を描画 x+=50; if(Buf[KEY_INPUT_F3]) i=TRUE; else i=FALSE; DrawBox(10+x,215,10+x+50,265, GetColor( 255 , 255 , 255 ) , i) ; // 四角形を描画 x+=50; if(Buf[KEY_INPUT_F4]) i=TRUE; else i=FALSE; DrawBox(10+x,215,10+x+50,265, GetColor( 255 , 255 , 255 ) , i) ; // 四角形を描画 x+=50; if(Buf[KEY_INPUT_F5]) i=TRUE; else i=FALSE; DrawBox(10+x,215,10+x+50,265, GetColor( 255 , 255 , 255 ) , i) ; // 四角形を描画 x+=50; if(Buf[KEY_INPUT_F6]) i=TRUE; else i=FALSE; DrawBox(10+x,215,10+x+50,265, GetColor( 255 , 255 , 255 ) , i) ; // 四角形を描画 x+=50; if(Buf[KEY_INPUT_F7]) i=TRUE; else i=FALSE; DrawBox(10+x,215,10+x+50,265, GetColor( 255 , 255 , 255 ) , i) ; // 四角形を描画 x+=50; if(Buf[KEY_INPUT_F8]) i=TRUE; else i=FALSE; DrawBox(10+x,215,10+x+50,265, GetColor( 255 , 255 , 255 ) , i) ; // 四角形を描画 x+=50; if(Buf[KEY_INPUT_F9]) i=TRUE; else i=FALSE; DrawBox(10+x,215,10+x+50,265, GetColor( 255 , 255 , 255 ) , i) ; // 四角形を描画 x+=50; if(Buf[KEY_INPUT_F10]) i=TRUE; else i=FALSE; DrawBox(10+x,215,10+x+50,265, GetColor( 255 , 255 , 255 ) , i) ; // 四角形を描画 x+=50; if(Buf[KEY_INPUT_F11]) i=TRUE; else i=FALSE; DrawBox(10+x,215,10+x+50,265, GetColor( 255 , 255 , 255 ) , i) ; // 四角形を描画 x+=50; if(Buf[KEY_INPUT_F12]) i=TRUE; else i=FALSE; DrawBox(10+x,215,10+x+50,265, GetColor( 255 , 255 , 255 ) , i) ; // 四角形を描画 x+=50; ScreenFlip() ; } DxLib_End() ; // DXライブラリ使用の終了処理 exit(0); // ソフトの終了 }
メンテ

Page: 1 |

Re: ファンクションキー取得の不具合 ( No.1 )
名前:チップ 日時:2016/09/15 15:51

あ、すみません。 F10を押すとウィンドウがアクティブじゃなくなるみたいですね。それで上記の挙動になるのですね。 これはアプリ側でどうにか対応できる問題じゃないということなのでしょうか?
メンテ
Re: ファンクションキー取得の不具合 ( No.2 )
名前:yuran 日時:2016/09/15 22:29

確かSetSysCommandOffFlagを使用したら無効にできたと思います。 詳しい事は分かりませんが、、、
メンテ
Re: ファンクションキー取得の不具合 ( No.3 )
名前:管理人 日時:2016/09/19 12:09

F10 は特殊なキーのようで、今のところ SetSysCommandOffFlag( TRUE ) ; を 実行する以外には不思議な挙動を抑えることはできません SetSysCommandOffFlag( TRUE ) ; はWindowsのバージョンによって挙動が異なったりするので 安定して F10 が使用できるという保証できませんが、F10 を使用される場合は SetSysCommandOffFlag( TRUE ) ; を使用するようにしてください m(_ _)m
メンテ
Re: ファンクションキー取得の不具合 ( No.4 )
名前:チップ(解決) 日時:2016/09/19 16:28

>yuranさん >管理人様 ご返答ありがとうございます。 F10はアプリサイドで使用するといろいろ問題があるようなので避けようかと思います。
メンテ

Page: 1 |

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

   クッキー保存