原文地址:
MainLoop里调用的函数,会把当前的各种各样的状态返回,对吧。
也就是说,我们有必要定制一下MainLoop里面调用的函数。
因此,我们准备一个func_state变量,把表示状态的值存进去,然后根据不同的条件进行分支的操作吧。
我们要把func_state 定义成全局变量,所以,首先加到 GV.h 里面。
————————————————————————————————————————————————————————————————————————————
--GV.h 里加上下面的内容--
GLOBAL int func_state;
————————————————————————————————————————————————————————————————————————————
为了给下一节做准备,我们先把初始化函数给准备好吧。
—————————————————————————————————————————————————————————————————————————————
--ini.cpp里加上下面这段--
void first_ini(){
}
—————————————————————————————————————————————————————————————————————————————
给mainloop里要调用的函数需要先声明呢,而声明得写在function.h里面
—————————————————————————————————————————————————————————————————————————————
--function.h里写下如下语句--
GLOBAL void first_ini();
—————————————————————————————————————————————————————————————————————————————
在mainLoop里,用准备好了的func_state 来进行条件的分支判断。
—————————————————————————————————————————————————————————————————————————————
//--main.cpp改动--
#define GLOBAL_INSTANCE
#include "../include/GV.h"
//主循环里必须做的三大处理
int ProcessLoop()
{
if(ProcessMessage()!=0)
return -1 ;//Process处理出错的话,返回-1
if(ClearDrawScreen()!=0)
return -1; //画面清理出错的话,返回-1
GetHitKeyStateAll_2(); //获取现在的键盘输入情况
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
ChangeWindowMode(TRUE); //窗口模式
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1; //初始化和设置双缓冲模式
while(ProcessLoop()==0) //主循环
{
switch(func_state)
{
case 0:
load(); //载入数据
first_ini();//第一次初始化
func_state=100;
break;
case 100:
graph_main();//主绘画函数
break;
default:
printfDx("未知的func_state\n");
break;
}
if(CheckStateKey(KEY_INPUT_ESCAPE)==1)
break; //按下ESC的话,break
ScreenFlip(); //交换双缓冲画面
}
DxLib_End();//DxLib中止
return 0;
}
—————————————————————————————————————————————————————————————————————————————
和第四章的执行结果一样。可以和以前一样运行起来的话,就算成功了。
本人CSDN博客目录: