今、Free Typingのデバッグをしていて気づいたのですが、
ダイアログの部分だけ、WMKEYDOWNでボタン操作が行われていて、
それ以外の部分は、WMKEYUPでボタン操作の処理が行われている。
こうすると、ダイアログでエンターキーを押して、ダイアログを閉じて、
そのまま前のウィンドウに戻ると、またそこで、ダイアログを
開く動作をする、というループに陥ってしまう。
そこで、ダイアログ以外もWMKEYDOWNでボタンの処理を行おうとさせるも、
これは以前のバージョンで問題が出ることが確認されている。
WMKEYDOWNは押しっぱなしのときでも、送信されているようで、
これによってどんな弊害が発生するかというと、
プレイ中→問題ファイル選択→タイトル、という一連の
戻る動作をEscキーに割り当てているのだが、プレイ中のときに
Escキーを押すと、たまにタイトル画面まで戻ってしまう、ということである。
そこで、単純にダイアログボックス側をWMKEYUPで処理させるということも
できなくないが、WMKEYDOWNの詳細を調べてみると、
Specifies the previous key state.
The value is 1 if the key is down before the message is sent, or it is zero if the key is up.
どうやら、LPARAMの30ビット目が直前のキーの状態を意味するようで、
これが、0なら今のキーははじめて押されたもの、1なら継続して
押されているもの、ということらしい。
そこで、30ビット目のフラグを調べる方法に取り掛かろうとするも、
ビット演算はどうにも不慣れで、どうしようか悩む。
とりあえず、自分なりに考えてみたけど、これでいいのだろうか。
まず、30ビット目が最下位ビットにくるように右シフトして、
それと1をANDして、その返されたものを、さらにまた1と比較する。
こんなのでいいのかなぁ。
他に方法があったら教えてもらえるとうれしいです。
さて、今日はまた面倒なことをやらされまして、
今年二度目の蜂の巣取りをやらされました orz
まったく、なんでわざわざうちに巣を作るのか、って
非常に腹立たしくなってきますが、怒っていても仕方がないので、
仕方無しに蜂の巣を取る。
もちろん、作業は夜で、わざわざ蜂に刺されたいとも思わないし、
第一怖いので、冬服着て、肌が露出しない状態で作業。
まず、殺虫剤をかけて、蜂を殺して、水をかけて、
適当なそこら辺にあった木を使って、蜂の巣を取る。
前回は、殺虫剤をかけた段階で、ボトボトと蜂が落ちる音が聞こえたのですが、
今回は、聞こえず。どうやら、蜂はいなかった模様。
巣も、前回は。10センチぐらいあったけど、今回は2センチあるか
どうかといったところ。
そんな感じで、蜂の巣取りをさせられてました。