HSP 3.6 β3
コールバックルーチン中のwaitが使用できなくなったので、自前でメッセージループを処理してwait相当の処理をするモジュール。
おすすめはしないです。
HSP 3.6 β3
コールバックルーチン中のwaitが使用できなくなったので、自前でメッセージループを処理してwait相当の処理をするモジュール。
おすすめはしないです。
// モジュール開始#module waithack#uselib "user32.dll"#func PeekMessageA "PeekMessageA" sptr,sptr,int,int,int#func GetMessageA "GetMessageA" sptr,int,int,int#func TranslateAccelerator "TranslateAcceleratorA" int,int,sptr#func TranslateMessage "TranslateMessage" sptr#func DispatchMessageA "DispatchMessageA" sptr#uselib "kernel32.dll"#func Sleep "Sleep" int#uselib "winmm.dll"#cfunc timeGetTime "timeGetTime"#undef wait#deffunc wait int p1, \local st, local wt, local MSG, local pMsgdim MSG, 7 : pMsg = varptr(MSG)wt = p1 * 10st = timeGetTime()repeat;PeekMessageA pMsg, 0, 0, 0, 0 // await的なのならこっちか;if stat != 0 {GetMessageA pMsg, 0, 0, 0if stat == 0 : endif stat != -1 {TranslateMessage pMsgDispatchMessageA pMsg};}if (timeGetTime() - st) > wt : breakloopreturn#global// モジュール終了// 以下サンプルonclick gosub *jumpstop*jumpwait 100mes "aaa"return