タイマーの設定について

[戻る]
ピー 2002/06/17(月) 23:16:55
visual c++を始めて1週間ぐらいですが、
タイマー処理がよく分かりませんので教えていただけないでしょうか?
やりたいことは、5秒後ぐらい後に、ある文章が書いてあるのと同じ場所に、
別の文章を表示するということなんですが、
ontimerなどの使い方が、いまいちマスターできません。
今まで、がんばって、DrawTextで文章を書くとこまではいったのですが、
そこから、どのようにontimerを使ったらいいのか分かりません。
すみませんが、教えていただけないでしょうか?
お願いします。

sugar 2002/06/18(火) 00:25:05
タイマーを使うにはまず、SetTimer()でインストールします。
この手順は踏んでますか?
これを行わないと、WM_TIMERが発生しません。

PATIO 2002/06/18(火) 09:45:14
うーん。
OnTimerの内容をHELPで確認してみましたか?
そこにSetTimerに関する記述があると思いますよ。
そこからSetTimerの説明にリンクが張ってあるから
SetTimerの説明もすぐに見つかると思うのですが。

Webで尋ねるのも決して悪い方法ではないですが、
返答してもらえる保証はどこにもありませんし、
内容によってはHELPで確認しなさいと書かれる
だけのときもあります。
HELPの使い方をマスターすることは、ピーさんに
とっても良いことだと思いますのでHELPを積極的に
利用されることをお勧めします。

ピー 2002/06/18(火) 22:22:15
すみません。聞き方を間違えました。
SetTimerを使うのまでは分かってるんですが、
OnTimerの中にどのように記述すればいいのかが分かんないんです。
OnTimerの中に、drawtextで書いたように、また、書いても、
ビルトできないんです。
何となくは、OnTimerの中に、更にDrawTextで書いてもしょうがないんでは…
ということは感じてるんですが、
どのように書けばいいのかが分かんないんです。
helpもみました。
でも、いまいち分かりません。
確かに、helpの使い方をマスターしないといけなんでしょうが、
なんか所々英語だし、初心者には難しすぎます。
すみませんが、助けてくれないでしょうか?
お願いします。

sugar 2002/06/19(水) 00:58:44
> OnTimerの中に、drawtextで書いたように、また、書いても、
> ビルトできないんです。
>
...なんだか意味が...
OnTimerは呼ばれるようにはなってるんですね?
で、OnTimerの中で、DrawTextを行ってみたんですか?
ビルト(正しくはビルド)できないって、コンパイルエラーが出るってことですか?
どんなエラーですか?

> 何となくは、OnTimerの中に、更にDrawTextで書いてもしょうがないんでは…
> ということは感じてるんですが、
>
しょうがないと感じる根拠は、何でしょうか。
しょうがないことはないと思いますよ。
最初のステップでは、それでいいと思います。
やってみれば、それでは不十分であることも気づくことでしょう。

ところでこのプログラム、MFC使ってるんですよね?

ヒー 2002/06/25(火) 11:50:33
SetTimerを使ってOnTimerを呼び出す為には
SeTTimerの引数の識別番号を使って
OnTimerを制御してあげればOKよ。
if文を使ってFlagなどを立ててあげたり、
そのどのくらいごとのタイムを使うのかわからないですけど、
そのTimeを--(デクリメント)して
流れるようにしたらどうですか?
自分はSetTimerを使うときには
そうしていますよ。
OnTimerの中身です。
if(TimeFlag=1){
   if(Time=0){
     //何らかの処理//
   }
   else{
      Time --;
   }
}
こんな感じでやってみたらどうですか?

PATIO 2002/06/25(火) 17:24:05
ちょっとだけヒントを
画面の描画は基本的にCViewクラスならOnDraw、他のクラスならOnPaintに押し込めるか、
そこから呼ぶようにするのが基本です。
これをやらないと、他のウインドウがかぶさった時の再描画時に描画してもらえません。
特定の描画を制御するためにメンバー変数にフラグや表示内容を入れたバッファを用意し、
描画時にこれを参照して描画するようにします。
OnTimer内では、メンバー変数へのデータの設定と再描画促すためにInvalidateや
InvalidateRectを使用すると一般的な動きになると思います。
もしくは、その描画ルーチンを関数化しておいて、OnTimerからもOnDrawかOnPaintの
中からも呼ぶようにするという手もありますね。

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