【非推奨】wait相当の動作をするはずのモジュール

HSP 3.6 β3
コールバックルーチン中のwaitが使用できなくなったので、自前でメッセージループを処理してwait相当の処理をするモジュール。
おすすめはしないです。

HSP 3.6 β3
コールバックルーチン中のwaitが使用できなくなったので、自前でメッセージループを処理してwait相当の処理をするモジュール。
おすすめはしないです。

  • hk1v
  • 2020/7/5 23:49
  • タグ:
  • タグはありません
//
#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
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX