SetTimer関数で開始直後に一度TimerProcの処理をさせるには?

解決


どら  2010-03-26 16:11:21  No: 71508  IP: 192.*.*.*

いつもお世話になっております。
XP with SP2 + VS Team System 2008 Development EditionでWin32 APIでプロ
グラムをしております。 

SetTimer関数についてなのですが、この間数は、開始してから引数にあるタイ
ムアウト時間になると、TimerProc関数を実行させますよね?

このTimerProcで行っている処理を、SetTimerを実行した直後に行わせ、それ
からはタイムアウト値ごとに実行させたいのですが・・・

これって、TimerProcと同じ処理を行う関数を別途作成して、SetTimerの直前
に実行させるしかないのでしょうか?

わかっていれば「そんなことでいいのか!!」という事なのだと思いますが、
ググって見てもなかなか見つからず・・・

ご存じの方いらっしゃいましたら、何卒ご教授のほど、お願いいたします。

編集 削除
仲澤@失業者  2010-03-26 17:37:25  No: 71509  IP: 192.*.*.*

>これって、TimerProcと同じ処理を行う関数を別途作成して、SetTimerの
>直前に実行させるしかないのでしょうか?

SetTimer()直後にタイムアウトコールバックを呼ぶ方法はありません。
ただ、TimerProc()は直接呼べますので、どういう問題があるのか
わかりません(vv;)。

編集 削除
maru  2010-03-26 17:44:20  No: 71510  IP: 192.*.*.*

TimerProcだって関数なんだから直接呼び出しすればいいんじゃないの?
何を悩んでいるのかなぁ。

> これって、TimerProcと同じ処理を行う関数を別途作成して、SetTimerの直前
> に実行させるしかないのでしょうか?
同じ処理を行う関数を別途作成してはいけません。必要な処理を行う関数を作成して、SetTimerの直前とTimerProcの中から呼び出すようにするんです。

編集 削除
ryo  2010-03-26 17:46:20  No: 71511  IP: 192.*.*.*

1:SetTimerの前に、コールバック関数としてつくったことを気にせず、TimeProc関数を呼ぶ

2:処理専用関数をつくり、タイマーとか関係なく呼び出せるようにする。
TimeProc関数中では処理せず、こいつを呼ぶ。

編集 削除
どら  2010-03-26 18:19:25  No: 71512  IP: 192.*.*.*

中澤さん、maruさん、ryoさん
レスありがとうございます。

コールバック関数って、普通に呼び出しちゃっていいものだと知らず・・・
常に何かの関数の中でポインタとして指定するものだとばかり思っていました(笑)

無事解決しました。
ありがとうございました!!

編集 削除