goo blog サービス終了のお知らせ 
goo

簡単タイマー

◆一覧リスト
HSP Ver3.0
HSP Ver2.61
ブログ関連
その他
★人気blogランキング

「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 コメント投稿終了予定)
 
コメントはありません。
コメントを投稿する
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。