网站大量收购独家精品文档,联系QQ:2885784924

vc++游戏编程第八章.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
vc游戏编程第八章

第八章 例程之初始化部分 第一节DDInit(): DDInit()的作用是枚举驱动程序,它的具体运行过程如下: 首先调用DirectDrawEnumerate(),这个函数的作用在第五章 DirectDraw深入篇第三节选择DirectDraw驱动程序中已经谈到了。在本例程中这个函数的参数是DDEnumCallback和NULL,DDEnumCallback是指回调函数DDEnumCallback()的地址,NULL是指没有这个指向应用程序数据的指针。 回调函数DDEnumCallback()的作用是将枚举过的的驱动程序的GUDI、描述和名字存入一个结构数组aDDDevs[]中。待以后选择。 第二节定义命令行参数 ?1.根据命令行参数确定运行方式 首先,使用while( lpCmdLine[0] == - || lpCmdLine[0] == /)检测命令行参数的标识符,然后再使用switch (*lpCmdLine++)对部分参数的含义进行定义: -e?? Use emulator(使用软件模拟) -S?? No Sound(无声) -1?? No backbuffer(不使用后备缓冲区) -2?? One backbuffer(一个后备缓冲区) -4?? Three backbuffers(三个后备缓冲区) -s?? Use stretch(使用拉伸算法,即是在窗口模式下改变窗口的形状时对图形使用拉伸算法使图象比较匀称。) -x?? Demo or stress mode(使用重音模式) 2.根据命令行参数确定显示模式 对显示模式的横轴方向的像素数GameMode.cx、纵轴方向的像素数GameMode.cy及颜色数GameMode.BPP调用getint(char**p, int def)取得命令行参数对这些项目的设定。 getint(char**p, int def)函数的运行过程为: 先检测命令行参数第一个字符是否是“”、“\r”、“\t”、“\n”或“x”。如果是就使指针p自加1并继续检测,否则检测该字符是否是小于9大于0的数。如果该字符不是小于9大于0的数则返回默认值,反之则通过 ?while (IS_NUM(**p) ?i = i*10 + *(*p)++ - 0 将输入的字符的ASCII值转变为数值。然后通过 ??? while (IS_SPACE(**p)) ??????? (*p)++; 检测后面的字符是否是“”、“\r”、“\t”、“\n”或“x”,如果是就使指针p自加1并继续检测,直到出现其他字符或字符串结束。 第三节初始化Windows 程序在这一部分调用了initApplication( HINSTANCE hInstance, int nCmdShow )函数来初始化Windows。 initApplication( HINSTANCE hInstance, int nCmdShow )首先定义窗口类为: ??? style:指明了类风格为向窗口发送一个鼠标双击的消息。   1pfnWndProc:指明了指向窗口函数的指针,该指针指向MainWndProc。   cbClsExtra:指定在窗口类结构后面分配的字节数为0。   cbWndExtra:指定在窗口实例后面分配的字节数为0。   hInstance:注册窗口类的应用程序实例句柄是hInstance。   hIconhIcon:划定利用窗口最小化时显示的图标通过调用LoadIcon( hInstance, MAKEINTATOM(FOX_ICON))获得。   hCursorhCursor:定义应用程序使用的光标通过调用LoadCursor( NULL, IDC_ARROW )获得。 ??? hbrBackground:背景刷子的标识符通过调用GetStockObject(BLACK_BRUSH)获得。 ??? 1pszMenuName:菜单的资源名的指针为NULL。 ??? 1pszClassName:窗口类的名字为WinFoxClass。 然后用 ??? if( !rc ) ??? { ??????? return FALSE; ??? } 注册这个窗口类,并在注册失败时结束程序。 接着用hWndMain = CreateWindowEx(……)创建窗口并将窗口的句柄赋给hWndMain 。该窗口被创建为: 窗口的扩展格式为? WS_EX_APPWINDOW 窗口类为? WinFoxClass 窗口名为?? OUR_APP_NAME 窗口格式为?? WS_VISIBLE |WS_SYSMENU |WS_POPUP(创建一个初始态可见的标题条上有系统菜单的重叠窗口或弹出式窗口 窗口左上角的X坐标?? 0 窗口左上角的Y坐标?? 0

文档评论(0)

asd522513656 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档