回调函数的参数如何设置
贴上定时器程序片段:大侠们帮我讲解下,$Timer = DllCallbackRegister("Timer", "int", "hwnd;uint;uint;dword");创建自定义函数Timer的回调,API定时器函数SetTimer需要
为什么这里要设置4个回调参数,每个参数的作用是什么,实在搞不定,我还发现最后一个参数"dword"可以删除掉,程序也能运行.
还有在Func Timer($hWnd, $uiMsg, $idEvent, $dwTime)里, $idEvent可以获取定时器ID,这是如何获取的,搞不懂.
$Timer = DllCallbackRegister("Timer", "int", "hwnd;uint;uint;dword");创建自定义函数Timer的回调,API定时器函数SetTimer需要
$TimerDLL = DllCall("user32.dll", "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", 1000, "ptr", DllCallbackGetPtr($Timer));1000毫秒执行一次
$Timer2DLL = DllCall("user32.dll", "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", 200, "ptr", DllCallbackGetPtr($Timer));200毫秒执行一次
$Timer3DLL = DllCall("user32.dll", "uint", "SetTimer", "hwnd", 0, "uint", 0, "int", 2000, "ptr", DllCallbackGetPtr($Timer));2000毫秒执行一次
Func Timer($hWnd, $uiMsg, $idEvent, $dwTime)
Switch $idEvent;根据定时器ID来进行操作
Case $TimerDLL
GUICtrlSetData($Label1, @HOUR & ":" & @MIN & ":" & @SEC & ":" & @MSEC);更新时间
Case $Timer2DLL
$t2 += 1
GUICtrlSetData($Label2, $t2);更新+1
Case $Timer3DLL
$t3 *= 2
GUICtrlSetData($Label3, $t3);更新2的自乘
EndSwitch
EndFunc 好复杂的东东,帮你顶下 回复 1# tts780679
查看该回调函数的原型:
http://msdn.microsoft.com/en-us/library/ms644907(v=vs.85).aspx
第1个参数: 接收并处理计时器消息的窗口的句柄.
第2个参数: 计时器产生的消息的代号
第3个参数: 计时器的ID
第4个参数: 系统启动后所经历的时间. 以毫秒计算.
如果你看了这些没有什么体会,那建议你先弄明白什么是回调函数及其用处?
最后提醒你: 连发两贴,都是同一问题. 这样做很不好. 谢谢回答,谢谢提醒,下次改正.
页:
[1]