空余时间拿出来学习游戏开发时间其乐无穷的事情有木有,当然不能被导师抓住,我是专心做学术的好孩子。。

任何一个程序的人生应该是从一句dos控制台的hello word 开始的,而windows的程序应该从一个最简单的窗体开始。

首先吐槽一下微软编程的匈牙利风格,实在不习惯随便大小写切换。。。

就像一个最简单的cpp程序都是从main()开始一样,window程序总是从WinMain()(再次吐槽一下匈牙利。。)开始的。

我们从一个最简单的windows程序开始解剖它。

#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include<windowsx.h>int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprevinstance,LPSTR lpcmdline,int ncmdshow)
{MessageBox(NULL,"you donnot love me!!",
"hello,cs_unsky",MB_OK|MB_ICONEXCLAMATION);
return(0);
}

#define WIN32_LEAN_AND_MEAN创建一个windows程序有两种方式,一种是使用微软基础类库(Microsoft Foundation Class,)就是传说中的mfc(顺便再吐槽一下某大牛写的一篇mfc兴亡论,过多的冗余和内嵌是这个类库的败笔,菜鸟还是只会用就好了、、),另一种就是软件开发工具包就是我们经常说的sdk 而这句话的作用就是告诉编译器我们用的是sdk开发,而不是用的MFC,(我们也跟不需要MFC的内容)!

接下来就是

#include<windows.h>

#include<windowsx.h>

我曾因为一个关键词的错误而去查询了一下这两个头文件的区别,这两个都是基本的window文件,其实在windows.h中包含了很多很多的库文件,具体调用可以偷懒这样一句概括,而windowsx.h这个头文件查阅文档说有许多重要的宏和常量的头文件。等有兴趣的时候可以具体的看看他的源码。

int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprevinstance,LPSTR lpcmdline,int ncmdshow)

作为程序的入口第一次入手总会想,我草,参数好多。

首先WINAPI声名符,它强制了参数从左到右传递,而不是象CDECL声名符那样从又到左传递。

没啥可说的记住即可:

int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprevinstance,LPSTR lpcmdline,int ncmdshow)

WINAP从左到右

CDECL 从右到左

一下是每个参数的具体意义:

hinstance 这个参数是一个windows为你的应用程序生成的实例句柄,实例是用来跟踪资源的指针或数。

hprevinstance   哈哈哈哈,在我学习这个时候是2015年,微软已经废弃了这个参数!!好开森有木有。。

lpcmdline   这个参数是一个空的终止字符串,回想一下标准的c++main函数的参数 main(int argc,char**argv)很相似有木有。。不过不同的是,它没有一个单独的参数来向argc那样指出命令行参数个数。

ncmdshow最后的这个参数是个整数,传给应用程序,这样用户就有点人机交互的意思。。。如果你这么认为的话,话说最讨厌一堆的参数有木有,算了,反正我也记不住,以后自己回来看。。

下面开始比较有成就感的代码段:

int  MessageBox(HWND hwnd,

LPCTSTR lptext,

UINT UTYPE);

hwnd 这是信息框连接的窗口句柄,我们可以设置成NULL那么你眼前的这个大桌面就成了这个窗口的父亲。

lptext 就是这个信息框的名字。

lpcaption  就是这个框里显示什么。

utype  他决定了要现实的信息框,微软大爷给我们提供了五花八门的信息框,恩,window上你见过的任何一种窗口标志你都可以通过这个调用,反正记不住,以后用着具体查询。

好了跑一下这个程序。

对了为了避免vs2010这编译器出现乱七八糟的错误,还是修改下编译器的参数为好。

首先在项目属性的清单工具里的输入输出选项中的嵌入清单选择否!这样就可以避开很严重的编译错误,具体原因我查询了,但是我忘记了。。。

另一个很无语的是vs2010默认是使用unicode编译的,但是我们需要的是多字符集,所以需要在项目属性的常规里面把字符集调整成多字符集。

然后我们就可以跑起来我们的第一个窗体了。

恩效果就是这个样子的。

好了。有时间写window窗体在游戏开发的实际操作,这些太菜了有木有。参数太多,并不需要一一赋值,等有了一两个小项目之后,就可以直接粘贴复制。。


int WINAPI WinMain(HINSTANCE hinstance,HINSTANCE hprevinstance,LPSTR lpcmdline,int ncmdshow)

游戏编程大师技巧—windows程序的基本构造相关推荐

  1. 开始利用CSDN做学习笔记,从windows 游戏编程大师技巧和3D游戏编程大师开始

    利用两个月的空余时间将windows 游戏编程大师技巧和3D游戏编程大师技巧看了一遍. 第一遍读的并不深入,代码也没有仔细研究.特别是3D下册,基本只是草草浏览了一遍而已.这一遍是为了对整体有个印象和 ...

  2. 3D游戏编程大师技巧+源码

    首先win10的SDK里已经没有了<dmusici.h>和<dmusicf.h>,所以我在网上找了DirectX8 SDK下载下来(windows游戏编程大师技巧的源码当然也要 ...

  3. 3D游戏编程大师技巧第一章 vs2013编译书本源码问题解决方案

    (书本是VC 6.0和vs2013不同) 一. 1.1.点击右键属性->配置属性->C/C++->附加包含目录:里面添加DirectX SDK的include文件路径:(如:D:\3 ...

  4. 《Windows游戏编程大师技巧》(第二版)第11章

    第三部分:核心游戏编程   第11章 算法.数据结构.内存管理和多线程   第12章 人工智能   第13章 游戏物理   第14章 文字时代   第15章 综合运用:编写游戏! 第11章 算法.数据 ...

  5. 《Windows游戏编程大师技巧》(第二版)第2章

    因此几乎是一夜间,Windows 95就改变了整个计算机行业.的确,目前还有一些公司仍然在使用Windows 3.1(你能相信吗?),但是Windows 95使得基于Intel的PC成为除游戏之外的所 ...

  6. 《Windows游戏编程大师技巧》(第二版)第1章(上)

    第1章 学海无涯 "Oh, you want some too?!?" -Hudson, Aliens Windows 编程就像是一场由来已久并还在进行着的战争.尽管游戏程序员曾经 ...

  7. Windows游戏编程大师技巧(一)

    第一章 无尽之旅 Windows编程是一场由来已久并还在进行着的战争.开始时,游戏程序拒绝Windows平 台,但正如Borg所言:"反对无效......",我也赞同这一观点.本章 ...

  8. 《Windows游戏编程大师技巧》三、Windows高级编程

    Windows编程很绝的地方在于:你不用了解太多细节,就可以完成很多工作. 使用资源 资源就是你的程序代码结合在一起的多块数据,可以被程序本身在运行时加载. 资源应当也放在程序的.EXE文件中的原因是 ...

  9. 《Windows游戏编程大师技巧》(第二版)第1章(下)

    实例:FreakOut 在沉溺于所讨论的有关Windows.DirectX 和3D 图形之前,应当暂停一下,先给你看一个完整的游戏--虽然简单了一点,但毫无疑问是一个完整的游戏.你会看到一个实际的游戏 ...

最新文章

  1. Docker核心技术之网络管理
  2. 马斯克的火箭又炸了,这次可能怪美国宇航管理局:因督导员迟到,星舰原型SN11被迫在浓雾中发射...
  3. 飞向天国:儿童智力单机游戏6岁-8岁
  4. JVM内存管理–GC算法精解(五分钟让你彻底明白标记/清除算法)
  5. xgboost、随机森林和逻辑回归的优缺点
  6. MMIO与PIO区别
  7. jQuery暴打灰太狼小游戏
  8. 什么是P2P和它的应用
  9. 【北亚数据恢复】zfs文件系统的服务器误删除的数据恢复
  10. 还在用纸质表进行设备巡检?
  11. 拼音四线三格图片_一年级拼音总结,请查收
  12. Navicat Premium 12的过期激活,问题解决的心路历程
  13. python运维工程师前景及待遇_做运维工程师有前途吗?
  14. T flip-flop
  15. PaymentsCloud怎么样
  16. keystore提取私钥和证书
  17. 有效解决solidworks无法获得下列许可solidworks standard。使用此许可文件不支持此版本(-21.126.0)
  18. Python上手就有
  19. 如何设计帮助中心才能真正地帮助客户解决问题?
  20. RecyclerView使用GridLayoutManager实现两种item

热门文章

  1. 推荐两个好用的打印Hiprint和流程图组件
  2. navicat mysql 日志_使用Navicat查看MySQL日志的具体方法
  3. iconv命令utf-8文件转为gbk文件
  4. python大数据怎么样_java大数据与python大数据如何选择?
  5. PyCharm 2022最新版详细图文安装教程(安装+运行测试+汉化+背景图设置)
  6. 北汇信息正式加入IAMTS联盟,助力智能网联汽车事业发展
  7. found character ‘@‘ that cannot start any token. (Do not use @ for indentation)
  8. 5大优秀黑客必逛技术网站
  9. P2P网贷系统-核心功能-用户投标-业务讲解
  10. 【软考】【系统架构设计师】最大流量问题