Power

  电源管理部分,会用到的参数为:

    // Powerint                            nPowerStatus;HMODULE                        hKrnl32;GetSystemPowerStatusFunc       lpfnGetSystemPowerStatus;


_InitPowerStatus()

  初始化电源信息:

  • LoadLibrary("kernel32.dll")
  • 获得函数GetSystemPowerStatus地址
  • 调用_UpdatePowerStatus

void HGE_Impl::_InitPowerStatus()
{hKrnl32 = LoadLibrary("kernel32.dll");if(hKrnl32 != NULL)lpfnGetSystemPowerStatus = (GetSystemPowerStatusFunc)GetProcAddress(hKrnl32, "GetSystemPowerStatus");_UpdatePowerStatus();
}

_InitPowerStatus


 _UpdatePowerStatus()

  获得电源信息。

void HGE_Impl::_UpdatePowerStatus()
{SYSTEM_POWER_STATUS ps;if(lpfnGetSystemPowerStatus != NULL && lpfnGetSystemPowerStatus(&ps)){if(ps.ACLineStatus == 1){nPowerStatus = HGEPWR_AC;}else if(ps.BatteryFlag < 128){nPowerStatus = ps.BatteryLifePercent;}else{nPowerStatus = HGEPWR_UNSUPPORTED;}}else{nPowerStatus = HGEPWR_UNSUPPORTED;}
}

_UpdatePowerStatus


 _DonePowerStatus()

  结束,释放动态链接库。

void HGE_Impl::_DonePowerStatus()
{if(hKrnl32 != NULL) FreeLibrary(hKrnl32);
}

_DonePowerStatus


Random

  在这个模块中提供随机数,作为唯一的参数的 是随机数的种子。

unsigned int g_seed=0;


 Random_Seed(int seed)

  设置随机数的种子。

void CALL HGE_Impl::Random_Seed(int seed)
{if(!seed) g_seed=timeGetTime();else g_seed=seed;
}

Random_Seed


 Random_Int(int min, int max)

  线性同余法产生一个整型随机数,范围为(min,max)。

int CALL HGE_Impl::Random_Int(int min, int max)
{g_seed=214013*g_seed+2531011;return min+(g_seed ^ g_seed>>15)%(max-min+1);
}

Random_Int


 Random_Float(float min, float max)

  产生一个浮点型随机数,范围为(min,max)。

float CALL HGE_Impl::Random_Float(float min, float max)
{g_seed=214013*g_seed+2531011;//return min+g_seed*(1.0f/4294967295.0f)*(max-min);return min+(g_seed>>16)*(1.0f/65535.0f)*(max-min);
}

Random_Float


Ini

  在这个部分中,从指定的Ini文件中读取、写入数据,所以需要一ini文件。

    char                szIniFile[_MAX_PATH];


set(const char* section,const char* name,type value);

  写入不同类型的参数。

void CALL HGE_Impl::Ini_SetInt(const char *section, const char *name, int value)
{char buf[256];if(szIniFile[0]) {sprintf(buf,"%d",value);WritePrivateProfileString(section, name, buf, szIniFile);}
}void CALL HGE_Impl::Ini_SetFloat(const char *section, const char *name, float value)
{char buf[256];if(szIniFile[0]) {sprintf(buf,"%f",value);WritePrivateProfileString(section, name, buf, szIniFile);}
}void CALL HGE_Impl::Ini_SetString(const char *section, const char *name, const char *value)
{if(szIniFile[0]) WritePrivateProfileString(section, name, value, szIniFile);
}

Setter


get(const char* section,const char* name, type value);

  读取数据。

int CALL HGE_Impl::Ini_GetInt(const char *section, const char *name, int def_val)
{char buf[256];if(szIniFile[0]) {if(GetPrivateProfileString(section, name, "", buf, sizeof(buf), szIniFile)){ return atoi(buf); }else { return def_val; }}return def_val;
}float CALL HGE_Impl::Ini_GetFloat(const char *section, const char *name, float def_val)
{char buf[256];if(szIniFile[0]) {if(GetPrivateProfileString(section, name, "", buf, sizeof(buf), szIniFile)){ return (float)atof(buf); }else { return def_val; }}return def_val;
}char* CALL HGE_Impl::Ini_GetString(const char *section, const char *name, const char *def_val)
{if(szIniFile[0]) GetPrivateProfileString(section, name, def_val, szIniString, sizeof(szIniString), szIniFile);else strcpy(szIniString, def_val);return szIniString;
}

Getter


  接下来就是图形了!

转载于:https://www.cnblogs.com/yoru/p/5515570.html

hge source explor 0x9 Power Random Ini相关推荐

  1. hge source explor 0x1

    hge.h & hge_impl.h hge.h是给用户的,所以在这里会列出所有的用户能使用的接口. hge_impl.h是引擎的具体实现,在这里除了给用户的接口实现之外还有额外的实现过程中的 ...

  2. HGE source explor 0x0

    本文准备开始HGE游戏引擎的代码阅读,其实我已经阅读完HGE的代码了,这里将准备再重新阅读代码.阅读代码将准备将代码拆开阅读,按每种功能分开来阅读,分别准备如下: 游戏的窗口 对于任意一个程序来说,一 ...

  3. hge source explor 0x8 timer

    Timer 时间部分,在hge中提供对于fps的控制,时间的控制等. 其中会用到的参数有. hge_impl.h // Timerfloat fTime;float fDeltaTime;DWORD ...

  4. hge source explor 0x5 input module

    Input Module 前面提到输入事件,那么对输入事件分类,分类如下 /* ** HGE Input Event type constants */ #define INPUT_KEYDOWN 1 ...

  5. hge source explor 0xA graphics Ⅰ

    Graphics 在这一部分完成初始化DX,并且完成固定流水线,然后在进行渲染. 在这一部分会用到的数据结构和参数有: 参数: D3DPRESENT_PARAMETERS* d3dpp;D3DPRES ...

  6. hge source explor 0x2 windows module

    Windows窗口 hge的window窗口的具体建立是在System_Initiate函数中,现在将hge中关于Windows窗口相关的代码拿出来. Windows相关参数 windows attr ...

  7. hge source explor 0x4 input module

    Input Module hge中的输入并没有用到Direct Input,在window消息构造输入信息. 对于鼠标和键盘,输入信息用一个结构来处理,hge中的信息事件的结构 /* ** HGE I ...

  8. hge source explor 0x3 windows module

    Windows窗口 在这里继续看窗口相关的函数,前面看到的部分能够生成一个窗口.在hge的代码中,我们可以看到别的函数处理窗口相关的事情,当然不是指的消息处理函数. 在hge中消息处理函数是最主要的函 ...

  9. hge source explor 0xD graphics Ⅳ

    外部接口 这里的接口提供给用户进行固定的步骤:BeginScene:自己的渲染:EndScene. 接下来从教程2的渲染顺序来看函数  Gfx_BeginScene(HTARGET targ) 在渲染 ...

最新文章

  1. VMware虚拟机三种网络模式(桥接、NAT、仅主机)的区别
  2. 学python语言用什么软件-对于自学python的初学者来说,应该使用什么编辑工具?...
  3. linux 自动备份脚本
  4. Session机制二(简易购物车案例)
  5. SQL语句 常用条件判断
  6. 自动编译和提交脚本(结合svn和visual studio)
  7. 7.Phong 和 BlinnPhong
  8. java 拉起服务_技术开发者应该如何构建小团队的微服务方案?
  9. 最大期望算法 (EM算法)
  10. java批量查询导致堆内存不足,带有嵌套聚合的Elasticsearch查询导致内存不足
  11. 把 Reative Native 47 版本集成到已有的 Native iOS 工程中
  12. python 获取foobar2000官网全部插件
  13. Mac 如何安装tomcat
  14. 算法时间复杂度O(1)
  15. 关于打开Excel显示受保护视图空白无内容的问题已解决
  16. Excel 删除重复数据只保留一条的绿色工具,excel删除重复的行
  17. JAVA基础英语单词
  18. 超市小程序怎么做_分享超市微信小程序制作步骤
  19. Duda模式分类 ch2 习题
  20. 11 - 向量微分、矩阵微分以及基于雅克比矩阵求导数

热门文章

  1. INEQUALITY BOOKS
  2. 模电_第九章_直流稳压电源电路
  3. 华为od统一考试B卷【连续出牌数量】JavaScript 实现
  4. LaTex 图和表之定位图像和表格
  5. 为什么会出现失眠 什么原因导致的
  6. 使用ThreeJs搭建BIM模型浏览器-第十步 加载优化
  7. 【数据库系统】函数依赖及其公理定理(1)
  8. fence集群实现HA(高可用)
  9. USB Server 第四代产品全新面市
  10. 手机炉石修改服务器,炉石 脚本 云服务器