设为首页 加入收藏

TOP

2.2.2 面向对象风格的框架(7)
2013-10-07 13:15:37 来源: 作者: 【 】 浏览:59
Tags:2.2.2 面向 对象 风格 框架

2.2.2 面向对象风格的框架(7)

第251~265行处理消息队列为空的情形,第253行如果m_IsVisible为false即窗口不可见,这时暂停程序运行,等待消息;如果窗口可见,第259~263行首先返回当前计时器的值,然后调用用户定义的更新函数,同时设置上一次计时器值,最后调用用户自定义的绘制函数,并交换前后缓存。

第269和270行调用用户自定义的卸载函数,并删除窗口,最后第279行取消注册的窗口。除了上述的处理过程外,还有一些当操作失败时的提示信息,请读者对照源程序自行分析。

 
 

最后,GL_Application类中还有一个窗口消息处理回调函数WindowsProc(),下面我们讲解一下该函数的处理过程。其中,由于我们自己定义了程序的消息处理函数Message(),因此在第58行首先需要调用GetWindowLong()来获得窗口的特性——用户自定义的32位程序附加值,并保存在LONG型变量user_data中,如果该值为0则在第62行检查窗口消息是否为创建消息WM_CREATE,若是则表明程序是第一次运行。第63~72行首先获得窗口结构的指针,进而获得程序实例的指针,然后在69行调用SetWindowLong()将该程序实例指针保存在用户自定义的程序附加值中,最后设置该程序可见后返回。

第74~77行代码,如果use_data值不为0,则表明不是第一次创建窗口,也就是意味着use_data的值已经被设置为该程序实例的指针。因此,我们可以获得该指针,然后调用程序实例自己的消息处理函数。

第80行是必需的,它将我们不感兴趣的其他消息交给默认的窗口消息处理函数去处理。

至此,我们的程序框架已经基本上介绍完了,如果你还有什么不明白的地方请对照源程序并再次阅读一下前面相关内容的介绍。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇2.2.1 Win32 SDK风格的框架(1) 下一篇2.2.2 面向对象风格的框架(6)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: