欢迎来到天天文库
浏览记录
ID:26610652
大小:52.50 KB
页数:9页
时间:2018-11-28
《游戏开发基础(8)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、游戏开发基础(8)第八章例程之初始化部分第一节DDInit():DDInit()的作用是枚举驱动程序,它的具体运行过程如下:首先调用DirectDrawEnumerate(),这个函数的作用在第五章DirectDraw深入篇第三节选择DirectDraw驱动程序中已经谈到了。在本例程中这个函数的参数是&DDEnumCallback和NULL,&DDEnumCallback是指回调函数DDEnumCallback()的地址,NULL是指没有这个指向应用程序数据的指针。回调函数DDEnumCallback()的作用是将枚举过的的驱动程序的GUDI、描述和名字存入一个结构数
2、组aDDDevs[]中。待以后选择。第二节定义命令行参数1.根据命令行参数确定运行方式首先,使用while(lpCmdLine[0]=='-'
3、
4、lpCmdLine[0]=='/')检测命令行参数的标识符,然后再使用switch(*lpCmdLine++)对部分参数的含义进行定义:-eUseemulator(使用软件模拟)-SNoSound(无声)-1Nobackbuffer(不使用后备缓冲区)-2Onebackbuffer(一个后备缓冲区)-4Threebackbuffers(三个后备缓冲区)-sUsestretch(使用拉伸算法,即是在窗口模式下改变窗口的形状时对
5、图形使用拉伸算法使图象比较匀称。)-xDemoorstressmode(使用重音模式)2.根据命令行参数确定显示模式对显示模式的横轴方向的像素数GameMode.cx、纵轴方向的像素数GameMode.cy及颜色数GameMode.BPP调用getint(char**p,intdef)取得命令行参数对这些项目的设定。getint(char**p,intdef)函数的运行过程为:先检测命令行参数第一个字符是否是“”、“r”、“t”、“”或“x”。如果是就使指针p自加1并继续检测,否则检测该字符是否是小于9大于0的数。如果该字符不是小于9大于0的数则返回默认值,反
6、之则通过while(IS_NUM(**p) i=i*10+*(*p)++-'0'将输入的字符的ASCII值转变为数值。然后通过while(IS_SPACE(**p))(*p)++;检测后面的字符是否是“”、“r”、“t”、“”或“x”,如果是就使指针p自加1并继续检测,直到出现其他字符或字符串结束。第三节初始化Windows程序在这一部分调用了initApplication(HINSTANCEhInstance,intnCmdShow)函数来初始化Windows。initApplication(HINSTANCEhInstance,intnCmdShow)首先
7、定义窗口类为:style:指明了类风格为向窗口发送一个鼠标双击的消息。 1pfnWndProc:指明了指向窗口函数的指针,该指针指向MainWndProc。 cbClsExtra:指定在窗口类结构后面分配的字节数为0。 cbWndExtra:指定在窗口实例后面分配的字节数为0。 hInstance:注册窗口类的应用程序实例句柄是hInstance。 hIconhIcon:划定利用窗口最小化时显示的图标通过调用LoadIcon(hInstance,MAKEINTATOM(FOX_ICON))获得。 hCursorhCursor:定义应用程序使用的光标通过调用
8、LoadCursor(NULL,IDC_ARROW)获得。hbrBackground:背景刷子的标识符通过调用GetStockObject(BLACK_BRUSH)获得。1pszMenuName:菜单的资源名的指针为NULL。1pszClassName:窗口类的名字为WinFoxClass。然后用if(!rc){ returnFALSE;}注册这个窗口类,并在注册失败时结束程序。接着用hWndMain=CreateWindowEx(……)创建窗口并将窗口的句柄赋给hWndMain。该窗口被创建为:窗口的扩展格式为WS_EX_APPWINDOW窗口类为"WinFox
9、Class"窗口名为OUR_APP_NAME窗口格式为WS_VISIBLE
10、WS_SYSMENU
11、WS_POPUP(创建一个初始态可见的标题条上有系统菜单的重叠窗口或弹出式窗口窗口左上角的X坐标0窗口左上角的Y坐标0窗口宽度GetSystemMetrics(SM_CXSCREEN)(屏幕宽度)窗口高度GetSystemMetrics(SM_CYSCREEN)(屏幕高度)父窗口的句柄NULL,窗口菜单的句柄NULL,窗口类的应用程序的实例句柄是hInstance 32位附加信息为NULL 然后,用if(!hWndMain){ returnFALSE
此文档下载收益归作者所有