2.3 增加环境设置选项
上一节建立了面向对象的框架,并对各个模块进行详尽的讲解,下面本节要在前面的基础之上增加一个运行环境模式设置的对话框,它基本上包括3种设置:屏幕分辨率、位深和是否全屏运行。具体运行界面如图2-7所示。
下面我们来介绍一下该对话框是如何实现的,首先建立一个模式选择对话框类ScreenDlg,主要完成窗口参数的传递、对话框的建立以及窗口消息处理函数。具体定义如下所示:
|
|
|
| 图2-7 模式选择对话框 |
首先,在第19行包含进程序窗口类头文件GLWindow.h,下面是类ScreenDlg的定义,它包含一个成员变量m_pWindow,是一个全局窗口类的实例,用来对程序窗口进行设置。
第28行定义了一个函数void SetupWindow(GL_Window *pWindow),它主要完成窗口参数的传递及建立一个对话框,具体实现如下:
|
|
|
|
最后,第78行调用EndDialog(hwndDlg, wParam)来结束对话框,对于一个模式对话框,我们必须要通过调用EndDialog()才能结束它。第80~82行则是“取消”(Cancel)按钮的响应,即结束对话框并退出程序。
第85~89行则是处理鼠标点击选择框的消息,即当鼠标点击某个选择框时设置该框为选中状态,它是通过调用CheckDlgButton(hwndDlg,lParam,BST_CHECKED)来进行设置的,其中第一个参数hwndDlg为对话框窗口句柄,参数lParam保存了控件的ID号,最后一个参数BST_CHECKED设置该控件为选中状态。
第93~100行处理WM_INITDIALOG消息,即当对话框被显示之前对其进行一些初始化设置,第95~97行则是设置“全屏”、“分辨率”和“位深”等的初始选中状态。其中CheckRadioButton()还同时设置了一组单选框,即保证了互斥选择(一次只能选择其中一个)。
至此,我们已经完全把面向对象风格的框架介绍完了,从下一章开始所有的章节都将使用该框架进行OpenGL技术的探讨,如果你对此框架还不是特别熟悉,请对照源程序再次仔细分析一下。






