今天,我要跟你分享开发 Windows 游戏的第一步,建立窗体。
上一节,我讲解 Python 和 C++ 的编译器,以及它们各自对应的 IDE 该如何选择,并且测试了 C/C++ 的运行,编译了一个 Lua 静态库。准备工作基本上算是完成了。
如果你有一些编程功底,应该知道建立 Windows 的窗体所需的一些基础知识。如果你经验稍丰富一些,还应该知道 Delphi、C++Builder、C# 等等。这些工具都可以帮助你非常方便地做出一个空白窗体,但是这些窗体并没有游戏的绘图系统,所以它们只是“建立了一个标准窗体”而已。因此,虽然建立窗体是我们这一节的内容,但我们要探讨的是,在窗体背后,Windows 系统做了什么。
Windows 窗体由哪些部分构成?
我们常规意义上的 Windows 窗体,由下列几个部分组成。
标题栏:窗口上方的鼠标拖动条区域。标题栏的左边有控制菜单的图标,中间显示的是程序的标题。
菜单栏:位于标题栏的下面,包含很多菜单,涉及的程序所负责的功能不一样,菜单的内容也不一样。比如有些有文件菜单,有些就没有,有一些窗体甚至根本就没有菜单栏。
工具栏:位于菜单栏的下方,工具栏会以图形按钮的形式给出用户最常使用的一些命令。比如,新建、复制、粘贴、另存为等。
工作区域:窗体的中间区域。一般窗体的输入输出都在这里面进行,如果你接触过 Windows 窗体编程,就知道在这个工作区域能做很多的事情,比如子窗体显示、层叠,在工作区域的子窗体内进行文字编辑等等。你可以理解成,游戏的图形图像就在此处显示。
状态栏:位于窗体的底部,显示运行程序的当前状态。通过它,用户可以了解到程序运行的情况。比如的,如果我们开发出的窗体程序是个编辑器的话,我按了一下 Insert 键,那么状态栏就会显示 Ins 缩写;或者点击到哪个编辑区域,会在状态栏出现第几行第几列这样的标注。
滚动条:如果窗体中显示的内容过多,不管横向还是纵向,当前可见的部分不够显示时,窗体就会出现滚动条,分为水平滚动条与垂直滚动条两种。
窗体缩放按钮:窗体的缩放按钮在右上角,在窗体编程中属于 System 类目。这些缩放按钮依次为最小化、最大化和关闭按钮。
我们来看一张标准的 Windows 窗体截图,这个软件名是 Notepad++。
这是 MSDN 上对于窗体结构的说明:
typedef struct tagWNDCLASSEX {
UINT cbSize;
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HINSTANCE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
HICON hIconSm;
} WNDCLASSEX, *PWNDCLASSEX;
使用 C/C++ 编写 Windows 窗体
接下来,我将使用 C/C++IDE 来编写代码,完成一个默认窗体的开发,并让它运行起来。