07 2008 档案

     摘要: 目标:游戏编程中经常需要使用定时器,多个定时器往往同时在运行,所以希望有一个独立的类,专门管理定时器。并支持console模式,因为服务器很有可能以console模式运行。客户端可以方便地使用定时器,虽然SetTimer函数的第四个参数可以设置回调函数,但这样每个使用的客户都必须实现一个静态或全局的函数作为回调函数,使用起来很不方便。

分析:console模式没有类似窗口模式的GetMessage函数,不能获取WM_TIMER消息。经过研究发现Console模式下也可以使用GetMessage函数,于是决定开一个线程专门用来GetMessage,当客户代码需要设定定时器时,直接使用SetTimer函数设定定时器。通过试验发现这么做GetMessage不能获得WM_TIMER消息。因为SetTimer的线程与GetMessage不是同一个线程。使用PostThreadMessage给等待在GetMessage的线程发自定义消息,让等待在GetMessage消息的线程解析PostThreadMessage参数,然后设置或取消定时器,这样,设定与获取定时器的线程就是同一个的  阅读全文

posted @ 2008-07-07 13:14 徐超 阅读(1010) | 评论 (0)  编辑 |