ボタンについて

[戻る]
あか 2005/09/01(木) 11:03:01
はじめまして あか といいます。

VC++.NETのダイアログベースでつくっています。
ボタンを1回クリックすると変数を+1するという処理
をしています。
しかし、現在はカウントアップさせるためには1回1回
ボタンをクリックしなければならないという状況で、
私としてはボタンを押している間、足し続けるという
処理をしたいと考えていますが、どうしていいのかわかりません。

よろしくお願いします。

επιστημη [E-Mail] 2005/09/01(木) 11:09:08
タイマーを一個用意し、
「タイマーが定周期イベント投げたときボタンが押されていたら+1」
ではダメかしら…

PATIO 2005/09/01(木) 13:26:10
似たような感じになりますけれど、
ボタンを押したタイミングでSetTimer
OnTimerでカウントアップ
ボタンを離したタイミングでKillTimer
で良いような気もします。
押したタイミングでマウスカーソルをキャプチャしておかないと
押しっぱなしでマウスカーソルが離れた時に止められないので
キャプチャしといてMouseMoveを拾って、ボタンから離れたら
キャプチャ解除してKillTimerとか。
実際にはもうちょっと調整が必要かも。

ともあれ、常套手段という気もします。

PATIO 2005/09/01(木) 13:27:53
よく考えたら、επιστημηさんの方法の方がシンプルでよいかも。
この場合、タイマーはずっと設定しっぱなしですよね。

επιστημη [E-Mail] 2005/09/01(木) 14:06:57
> この場合、タイマーはずっと設定しっぱなしですよね。

うん、だけどボタンの押し/離しとまったく関係なくタイマーが動き続けているので、
インターバルが長いとタイミングによってはボタンが押されてから+1までの間が空きます。

ホントならキー・リピートみたいな動き:押したら直ちに+1、しばらく押し続けて
いると+1+1+1... となるのが望ましいのでしょうが、
それはプログラマがどこまで凝るか、だな ^^;

リンク 2005/09/01(木) 15:13:53
自分ならタイミングの問題があるのでPATIOさんの方でやりますね。

というかある意味情けないですがεπιστημηさんの方法は思いつかなかった。orz
やはり「無駄なことはしない」というのが基本的にはあるので
必要のない時にもタイマーが動いているという状態が思い付かなかった。
けど、ある時にはこういう大胆な?考えも必要なんでしょうね。

タイミング的なことを気にしないならεπιστημηさんの方がシンプルだし楽ですね。

ま、最終的には
>それはプログラマがどこまで凝るか、だな ^^;
これにつきますが。

あか 2005/09/01(木) 20:47:00
>「タイマーが定周期イベント投げたときボタンが押されていたら+1」

タイマーを使うということはわかったのですが、「ボタンが押されている」
という状態を取得するには、どのようにすれば良いのかがわからないです。

申し訳ありませんがよろしくお願い致します。

επιστημη 2005/09/01(木) 21:21:32
>「ボタンが押されている」という状態を取得するには、
> どのようにすれば良いのかがわからないです

なんでやねん orz
ButtonDownからButtonUpまでの間、ボタンが押されています。

PATIO 2005/09/02(金) 11:05:59
>「ボタンが押されている」という状態を取得するには、
> どのようにすれば良いのかがわからないです

自分で状態管理をしてください。
επιστημηさんが書かれている通り、
フラグでも用意してButtonDownでTRUEにして
ButtonUpでFALSEにすれば、判定が付くのでは?
基本的にクラスメソッド等で直接取得できない情報は
プログラマ自身で管理して使うしかありません。

あか 2005/09/02(金) 20:44:20
[[解決]]
おかげさまで解決することができました。

επιστημηさん、PATIOさん、リンクさん
回答していただいてありがとうございました。

古いスレッドには追加発言できません。