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 pMsg dim MSG, 7 : pMsg = varptr(MSG) wt = p1 * 10 st = timeGetTime() repeat ;PeekMessageA pMsg, 0, 0, 0, 0 // await的なのならこっちか ;if stat != 0 { GetMessageA pMsg, 0, 0, 0 if stat == 0 : end if stat != -1 { TranslateMessage pMsg DispatchMessageA pMsg } ;} if (timeGetTime() - st) > wt : break loop return #global // モジュール終了 // 以下サンプル onclick gosub *jump stop *jump wait 100 mes "aaa" return