全然更新しないブログ
HSPメモ帳
簡単タイマー
「WM_TIMERを使った簡単なタイマー」
「WM_TIMER」(0x0113)は指定した時間毎に通知されるメッセージです。
あまり精度が良く無いので処理の多いゲーム等には不向きですが、
簡単な処理では利用できそうです。
HSP3の命令「oncmd」でウィンドウメッセージを処理できます。
以下使用方法例です。
- ◆方法例
1.「SetTimer」で開始- 「SetTimer」関数を使わない限り「WM_TIMER」メッセージは発生しません。
例)
#uselib "user32.dll"
#func SetTimer "SetTimer" int,int,int,sptr
SetTimer hwnd,1234,1000,0
第一引数:メッセージを受け取るウィンドウハンドルを指定
第二引数:タイマーの識別子
第三引数:時間の指定 単位はミリ秒(ms) 1000=1秒
第四引数:コールバック関数のアドレス(HSPの場合は0)
※「SetTimer」関数で、識別子を複数登録できます。
- 2.「oncmd」命令で「WM_TIMER」メッセージを処理
- 例)
oncmd gosub *WM_TIMER , 0x0113
stop
*WM_TIMER
mes "1秒経過"
return
- 3.タイマー処理が必要無くなったら「KillTimer」関数で終了
- 例)
#uselib "user32.dll"
#func KillTimer int , int
KillTimer hwnd , 1234
第一引数:1で指定したウィンドウハンドル
第二引数:1で指定したタイマーの識別子
その1.カップラーメン
複数のタイマー識別子
1234(3分後ウィンドウ10回点滅処理)と
1235(1秒毎にタイトルバーに表示)
をしています。
実行結果 |
ボタンを押して3分後ウィンドウとタスクバーが10回点滅します。 |
3分タイマー サンプル |
//関数登録 #uselib "user32.dll" #func SetTimer "SetTimer" int,int,int,sptr #func KillTimer "KillTimer" int,int #func FlashWindowEx "FlashWindowEx" sptr //メイン screen 0 , 150 , 30 title "カップラ~メン" pos 0 , 0 : objsize 150 , 30 button "3分",*set oncmd gosub *WM_TIMER , 0x0113 stop //タイマー登録 *set dim ct : ct = 1 SetTimer hwnd , 1235 , 1000 , 0 SetTimer hwnd , 1234 , 180000 , 0 stop //タイマー処理と解除 *WM_TIMER if wparam=1235{ title ""+ct+" 秒経過" ct++ } if wparam=1234{ KillTimer hwnd , 1235 KillTimer hwnd , 1234 title "カップラ~メン" dim flashinfo , 5 flashinfo(0)=20 : flashinfo(1)=hwnd flashinfo(2)=3 : flashinfo(3)=10 flashinfo(4)=0 FlashWindowEx varptr(flashinfo) } return |
コメント ( 0 ) | Trackback ( 0 )
« メールの送信方法 | hspcmp.dllを... » |
コメント(10/1 コメント投稿終了予定) |
コメントはありません。 |
![]() |
コメントを投稿する |