2.2.2 面向对象风格的框架(4)
3. 应用程序类GL_Application的设计及实现
类GL_Application为我们的应用程序提供了统一的接口,当我们编制不同的程序时不用再从头开始,只要实现其对应的接口方法即可,大大减少了开发人员的开发难度。具体来说,程序类GL_Application主要提供了4个虚函数供子类继承:Initialize()、Deinitialize()、Update()和Draw(),类的具体定义如下:
首先,第92行定义了一个自定义消息,在切换窗口模式时发送。下面第94~100行定义了一些成员变量,如GL_Windows窗口类、程序名字和4个标志变量,最后是一个DWORD类型的值用来保存上一次计时器的值。
我们可以看到,在第63行创建了一个全局的Create()函数,继承类必须通过实现该函数来创建一个程序实例。下面看一下GL_Application类的构造函数:
构造函数主要传入类的名字,然后设置四个标志变量的初始值,并设置计时器初始值为0。第76~78行定义了3个通用函数,先看void ToggleFullscreen(),它是用来在窗口和全屏之间切换模式的,实现代码如下:
可以看出,切换模式的实现非常简单,只用向主窗口发送一条预先定义的切换窗口消息WM_TOGGLEFULLSCREEN即可,具体实现后面会讲解。第二个函数是voidTerminateApplication(),用来结束程序,其实现也很简单,向窗口发送一条WM_QUIT消息即可,然后再更新程序循环标志为false。最后一个是void ResizeDraw(bool enable),用来设置在窗口改变大小时能否绘制的标志。