--
柳田由太
yu...@sala.or.jp
ホームページ(個人):
http://www.sala.or.jp/~yuta/index2.html
--
柳田由太
yu...@sala.or.jp
ホームページ(個人):
http://www.sala.or.jp/~yuta/index2.html
会社:
http://www2.ara-net.co.jp/stud/
Yanagida wrote in message <#dR2BEtt#GA.263@cppssbbsa03>...
私は、Win2.xxのころこうした形でプログラムを作っていま
したが、いまでも通用するようです。
タイマーの割り込みに関しては、できるだけ少ないほうがよい
ようで(Win16の頃はかなりタイマーリソースが限定されていた)、
複数のタイマーをIDで区別するよりも、タイマー内部でSemdMessage
関数などで、他のWindowにメッセージを発生させるなどで複数の
タイマーが必要な時に処理を割り当てたほうが無難です。
MFCではほとんど意識して使うことはないですが、WM_TIMER
はWindowsシステムからのコールバックなので、共有データメモリー
の扱いについては気をつけてたほうが良いと思います。
// 簡単な例:完全ではないが...
UINT nIDEvent;
UINT nElapse;
MainCallBack(){
switch(mes){
case WM_CREATE:
nIDEvemt = 1;
nElapse = 100;
SetTimer(hWnd,nIDEvent,uElapse,NULL);
break;
case WM_TIMER:
break;
case WM_DESTROY:
// 少なくともこのメッセージループが終了する直前にはタイマーを解
放しておく。
KillTimer(hWnd,nIDEvent);
break;
}
}
-=-=-=-=-=-=-=-=-=-=-=-
(株)ソーゴー東京 コンピュータ担当 広畑由紀夫
http://www.sogopr.co.jp/ hiro...@sogopr.co.jp
RINGSERVER PROJECT Openlab 喜多狼Lab代表
http://openlab.ring.gr.jp/kitaro/ kit...@osk.3web.ne.jp
-=-=-=-=-=-=-=-=-=-=-=-
会社:
http://www2.ara-net.co.jp/stud/
広畑由紀夫 wrote in message <#BFaSZtt#GA.233@cppssbbsa03>...
こうしたマルチスレッドライクな処理にはその再入にも気をつけて
おきましょう。
もちろん、再入されてよい場合は別です。
case WM_TIMER:{
static BOOL bReEntry=TRUE;
if(bReEntry==TRUE){
bReEntry=FALSE; // 再入禁止
・
・
・
// ここに再入されては困る処理を書いておく
・
・
・
bReEntry=TRUE; // JOB終了