題名の通り、ボタン長押しの実現をどうするのが一番よいかというのが質問です。
例としては携帯電話のメールの文削除の時を思い浮かべてもらうのがわかりやすいです。
あるキーを押すと関数Aを実行するのですが(携帯のメールでいう一文字削除)
そのキーを押し続けると関数Bを実行する(携帯のメールでいう全文削除)
というのを実装したいのですが、
以下の二つが思いつきました。
1、while内でカウンターが作動し続ける
while(ボタン押し続けられている間) { if(i>=ある整数) { B(); break; } ++i; } A();2、timeを取り、減算
time1=time(NULL); while(1) if(ボタンが離されたら) break; time2=time(NULL); if(difftime(time2,time1)>=ある時間) B(); else A();1で実行したところ、iがものすごい大きい数になりました。
長押しをしたつもりでなくてもiは大きかったです。
これはちょっと危険な感じがしたので2を作りました。
(1では関数Bの後に関数A()に入っていますが、気にしないでください。)
2はうまく実行できているのですが
あまりtime自体使ったことがないので
2が効率がいいのかどうなのかよくわかりません。
もっと良い書き方はあるのでしょうか?
timeを使わないとか・・・。(かつ安全)
初歩的な質問で申し訳ありません。
よろしくお願いします。