从0开始学游戏开发
蔡能
原网易游戏引擎架构师,资深游戏底层技术专家
立即订阅
5811 人已学习
课程目录
已完结 41 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 跟我学,你也可以开发一款游戏!
免费
第一章:游戏开发基础知识 (5讲)
第1讲 | 游戏开发需要了解哪些背景知识?
第2讲 | 2D游戏和3D游戏有什么区别?
第3讲 | 游戏的发动机:游戏引擎
第4讲 | 底层绘图接口的妙用
第5讲 | 构建游戏场景的武器:地图编辑器
第二章:客户端开发 (10讲)
第6讲 | 从0开始整理开发流程
第7讲 | 如何建立一个Windows窗体?
第8讲 | 如何区分图形和图像?
第9讲 | 如何绘制游戏背景?
第11讲 | 如何载入“飞机”和“敌人”?
第12讲 | 如何设置图像的前后遮挡?
第14讲 | 如何设置精灵的变形、放大和缩小?
第15讲 | 如何设置淡入淡出和碰撞检测?
第17讲 | 如何制作游戏资源包和保存机制?
第18讲 | 如何载入背景音乐和音效?
第三章:UI和键盘鼠标 (3讲)
第20讲 | 如何在游戏中载入UI和菜单?
第21讲 | 如何用鼠标和键盘来操作游戏?
第23讲 | 如何判断客户端的网络连接?
第四章:脚本语言 (3讲)
第24讲 | 如何嵌入脚本语言?
第26讲 | 脚本语言在游戏开发中有哪些应用?
第27讲 | 如何使用脚本语言编写周边工具?
第五章:服务器端开发 (6讲)
第29讲 | 如何选择合适的开发语言?
第30讲 | 如何定制合适的开发协议?
第32讲 | 不可忽视的多线程及并发问题
第33讲 | 如何判断心跳包是否离线?
第35讲 | 如何用网关服务器进行负载均衡?
第36讲 | 如何制作游戏内容保存和缓存处理?
第六章:热点剖析 (9讲)
第10讲 | 热点剖析(一):HTML5技术是如何取代Flash的?
第13讲 | 热点剖析(二):如何选择一款HTML5引擎?
第16讲 | 热点剖析(三):试试看,你也可以编写一款HTML5小游戏!
第19讲 | 热点剖析(四):安卓端和苹果端游戏开发有什么区别?
第22讲 | 热点剖析(五):如何选择移动端的游戏引擎?
第25讲 | 热点剖析(六):AR和人工智能在游戏领域有哪些应用?
第28讲 | 热点剖析(七):谈谈微信小游戏的成功点
第31讲 | 热点剖析(八):谈谈移动游戏的未来发展
第34讲 | 热点剖析(九):谈谈独立开发者的未来发展
加餐 (3讲)
复习课 | 带你梳理客户端开发的三个重点
课后阅读 | 游戏开发工程师学习路径(上)
课后阅读 | 游戏开发工程师学习路径(下)
结束语 (1讲)
结束语 | 做游戏的过程就像是在雕琢一件艺术品
从0开始学游戏开发
登录|注册

第7讲 | 如何建立一个Windows窗体?

蔡能 2018-06-09
今天,我要跟你分享开发 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; //结构体大小,等于 sizeof(WNDCLASSEX)
UINT style; //窗体的风格
WNDPROC lpfnWndProc; //窗体函数指针
int cbClsExtra; //附加在窗体类后的字节数,初始化是零
int cbWndExtra; //附加在窗体实例化的附加字节数。系统初始化是零,如果一个应用程序使用WNDCLASSEX注册一个通过在资源中使用CLASS指令建立的对话框时,必须把这个成员设成DLGWINDOWEXTRA。
HINSTANCE hInstance; //该对象的实例句柄
HICON hIcon; //该对象的图标句柄
HCURSOR hCursor; //该对象的光标句柄
HBRUSH hbrBackground; //该对象的背景刷子
LPCTSTR lpszMenuName; //菜单指针
LPCTSTR lpszClassName; //类名指针
HICON hIconSm; //与窗体关联的小图标,如果这个值为NULL,那么就把hIcon转换为大小比较合适的小图标
} WNDCLASSEX, *PWNDCLASSEX;

使用 C/C++ 编写 Windows 窗体

接下来,我将使用 C/C++IDE 来编写代码,完成一个默认窗体的开发,并让它运行起来。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0开始学游戏开发》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(12)

  • Geek_King@技术爱好者
    c++窗口那段程序,编译时需加上-mwindows或者-lgdi32,又或者在建工程的时候选择建立gui程序🙄🙄🙄
    2018-06-15
    3
  • 呵呵
    要是能提供远嘛就好了,跟着后面敲太麻烦
    2018-06-09
    3
  • 清新灬小柠檬
    直接将显示器的大小当作参数传到绘制窗体的函数中?
    2019-06-24
    1
  • 壬大师
    老师,python能开发手机游戏吗,游戏引擎用的是pygame吗?

    作者回复: 目前没有成熟的python游戏引擎支持手机游戏开发。

    2018-06-11
    1
  • 白马
    是调用windows api中获取当前屏幕窗口尺寸的方法获得吗?
    2018-06-09
    1
  • 立春
    C++用的是MFC了……

    作者回复:
    mfc 全称 microsoft foundation classes,微软基础库,建立窗体可以使用 mfc,也可以使用ATL等等,但基础代码还是windows api

    2018-06-09
    1
  • GS
    python3 要用小写的tkinter
    2018-07-28
  • 宋桓公
    最大化,加无边框等于全屏

    作者回复: 这是一种方式,没错的

    2018-06-27
  • 壬大师
    老师,那手游的开发目前也都是C++咯?像简单游戏比如手机棋牌类游戏一般用什么语言?

    作者回复: 不都是。原生开发,苹果会用obj c, 安卓java,或者也有封装后生成的,比如cocos系列的语言

    2018-06-13
  • @浩
    用QT写窗口如何,MFC有点晦涩难懂。

    作者回复: 我写的不是MFC

    2018-06-09
  • 风华神使
    楼上,cxx默认不用图形库,用winapi
    2018-06-09
  • 呵呵
    用c++建立窗体,默认用的什么图形库?

    作者回复: windows api

    2018-06-09
收起评论
12
返回
顶部