APIの「RegisterHotKey」をつかってタイピング練習ソフトを作っています。
labelにA〜Zのアルファベットを表示して、それが入力されたらまた次のアルファベットを表示し、また入力するというものです。
それを繰り返していると、50文字に一度ぐらいキーを押しても何も動作しないことがあります。
もう一度同じ文字を押してみると正常に動作します。
ちなみに、動作がおかしくなる文字はいつも違います。
なぜこうなるかわかる人がいたら教えてください。
なぜ、タイピング練習ソフトにRegisterHotKeyが
必要なのかがよくわからないのですが・・・。
キーを拾うだけなら、KeyPreviewをTrueにして、
FormのKeyDown/KeyPressイベントに記述するだけで
いいように思いますが・・・。
ええ…、そうですねぇ、
ホットキーをつけてけしてつけて消して…を繰り返すと、
あんまりいいようには思えないです。
手続きも多くなるし。
Sayさんの言うとおり、KeyDownで取得するか、
Timerをつくって、そこでできるだけ早く、GetKeyStateで拾うか…。
(上だと子ウィンドウにフォーカスがあるとき取得できないことがあります。
下だとタイマーイベント中におされてないといけないので、失敗しやすいです)
FormのKeyDown,KeyPreviewよりTextボックスの方が
割と処理がいいんですよね。
ツイート | ![]() |