第二节定义命令行参数 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。
第四节帮助信息的显示 在这里调用了MessageBoxA(HWND hWnd ,LPCSTR lpText,LPCSTR lpCaption,UINT uType)函数。它的调用方式如下: if( bHelp ) { MessageBox(hWndMain, "F12 - Quit\n" "NUMPAD 2 - crouch\n" "NUMPAD 3 - apple\n" "NUMPAD 4 - right\n" "NUMPAD 5 - stop\n" "NUMPAD 6 - left\n" "NUMPAD 7 - jump\n" "\n" "Command line parameters\n" "\n" "-e Use emulator\n" "-S No Sound\n" "-1 No backbuffer\n" "-2 One backbuffer\n" "-4 Three backbuffers\n" "-s Use stretch\n" "-x Demo or stress mode\n", OUR_APP_NAME, MB_OK ); }
它的含义是:如果bHelp为TURE,则在hWndMain所指向的窗口创建一个消息框。这个消息框的内容是“”所包含的部分,标题是OUR_APP_NAME(在foxbear.c中有#define OUR_APP_NAME "Win Fox Application"语句),并且这个消息框显示一个OK按钮。