hge source explor 0x9 Power & Random & Ini
Posted YORU
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hge source explor 0x9 Power & Random & Ini相关的知识,希望对你有一定的参考价值。
Power |
电源管理部分,会用到的参数为:
// Power int 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(); } |
_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; } } |
_DonePowerStatus() |
结束,释放动态链接库。
void HGE_Impl::_DonePowerStatus() { if(hKrnl32 != NULL) FreeLibrary(hKrnl32); } |
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_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_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); } |
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); } |
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; } |
接下来就是图形了!
以上是关于hge source explor 0x9 Power & Random & Ini的主要内容,如果未能解决你的问题,请参考以下文章
hge source explor 0x4 input module
hge source explor 0x6 input module
hge source explor 0x3 windows module