ボタンについて – プログラミング – Home

通知
すべてクリア

[解決済] ボタンについて


あか
 あか
(@あか)
ゲスト
結合: 20年前
投稿: 3
Topic starter  

はじめまして あか といいます。

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

よろしくお願いします。


引用未解決
トピックタグ
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

タイマーを一個用意し、
「タイマーが定周期イベント投げたときボタンが押されていたら+1」
ではダメかしら…


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

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

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


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

よく考えたら、επιστημηさんの方法の方がシンプルでよいかも。
この場合、タイマーはずっと設定しっぱなしですよね。


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 600
 

> この場合、タイマーはずっと設定しっぱなしですよね。

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

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


返信引用
リンク
 リンク
(@リンク)
ゲスト
結合: 22年前
投稿: 35
 

自分ならタイミングの問題があるのでPATIOさんの方でやりますね。

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

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

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


返信引用
あか
 あか
(@あか)
ゲスト
結合: 20年前
投稿: 3
Topic starter  

>「タイマーが定周期イベント投げたときボタンが押されていたら+1」

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

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


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

>「ボタンが押されている」という状態を取得するには、
> どのようにすれば良いのかがわからないです

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


返信引用
PATIO
(@patio)
Famed Member
結合: 4年前
投稿: 2660
 

>「ボタンが押されている」という状態を取得するには、
> どのようにすれば良いのかがわからないです

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


返信引用
あか
 あか
(@あか)
ゲスト
結合: 20年前
投稿: 3
Topic starter  

おかげさまで解決することができました。

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


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました