| 赞 | 2 |
| VIP | |
| 好人卡 | |
| 积分 | 1 |
| 经验 | |
| 最后登录 | 2019-10-10 |
| 在线时间 | 24 小时 |
- 梦石
- 0
- 星屑
- 61
- 在线时间
- 24 小时
- 注册时间
- 2008-8-5
- 回帖
- 1912
|
发表于 2009-12-30 18:20:18
|
显示全部楼层
本帖最后由 紫苏 于 2009-12-31 11:55 编辑
回调函数一般是 Pascal 标准调用约定函数,Ruby 层没这样的东西(除非通过其它语言的接口传递函数的地址),回调由 Method 和 Proc 模拟实现
你可以用线程来计时,或者给 SetTimer 的函数地址参数传 NULL,表示让计时器发送 WM_TIMER 消息到窗口消息队列,交给窗口过程函数处理(参考神思的 RM 窗口过程)
(其实即便是指定了一个回调函数,WM_TIMER 还是会被发送到消息队列,只不过默认的窗口过程函数会在处理 WM_TIMER 的时候会回调你指定的函数)
编辑补充:SetTimer 所产生的 WM_TIMER 消息是一个低优先的消息,在程序并不十分空闲时不一定能做到精确计时,因为 GetMessage 或 PeekMessage 在获取消息的时候会优先获取其它优先级更高的消息~ 如果用线程的话,你可以自定义线程优先级,就不用担心这样的问题了 |
|