在开始写游戏相关的代码之前,我们需要实现Win32程序的大体框架,其中最重要的是主窗口和消息循环。我不打算使用诸如WTL,MFC之类的GUI框架,在游戏编程中,这些框架除了增加复杂性之外并没有太大好处。最明智的做法是自己写一个简单但适合于游戏开发的视窗框架。我接下来将会实现它,这个框架用到代码非常的少,甚至没有类的存在,但它的确满足要求了。最重要的一点是,它非常容易理解。
创建工程
用VS创建一个Win32工程,工程文件结构大致是这样的:
- main/App.cpp- lib/Commons.hWindowFrame.hWindowFrame.cpp
App.cpp 是程序的主执行流程。
Commons.h 用于存放公共的类型声明和辅助函数,以后会逐步丰富这个头文件的代码。
WindowFrame.h/cpp 实现下面的功能:
- 一个顶层窗口
- 一个消息循环
- FPS计算
后面给出的Demo下载就可以看到全貌了。
创建窗口
创建窗口的代码包装成一个函数,只需传递几个参数就可以把窗口创建并显示出来,下面是原代码:
BOOL InitWindow(LPCTSTR title, int clientWidth, int clientHeight, WINDOWPROC procWnd)
{
# define WND_CLASSNAME _T( "colin.windows.class")
_WndProc = procWnd;
// 注册窗口类
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)_WindowProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = ThisModuleHandle();
wcex.hIcon = NULL;
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
wcex.lpszMe