home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1998 November
/
VPR9811A.BIN
/
VPR_DATA
/
Program
/
Ce
/
Battery.c
< prev
next >
Wrap
C/C++ Source or Header
|
1998-09-04
|
5KB
|
163 lines
//
// Battery.c
//
#include <windows.h>
#include "resource.h"
//----------------------------------------------------------------------------
BOOL DisplayBatteryStatus(
HWND hWnd,
PAINTSTRUCT * ps)
//----------------------------------------------------------------------------
{
SYSTEM_POWER_STATUS_EX SysStatus;
RECT rc;
TCHAR szWork[80];
INT i;
TCHAR szUnknown[] = TEXT("不明");
const LPCTSTR pszACLineStatus[3] = {
TEXT("メインバッテリ"),TEXT("外部電源"),szUnknown
};
const LPCTSTR pszBatteryStatus[6] = {
TEXT("OK"),TEXT("少ない"),TEXT("残りわずか"),
TEXT("充電中"),TEXT("接続なし"),szUnknown
};
// Get power status of the system
if(GetSystemPowerStatusEx(&SysStatus, TRUE) != TRUE)
return FALSE;
GetClientRect(hWnd, &rc);
rc.left = 200;
rc.top = 30;
rc.right = rc.left + 199;
rc.bottom = rc.top + 14;
// AC Line Status:
// is the machine connected to the mains?
i = (SysStatus.ACLineStatus > 1)? 2:SysStatus.ACLineStatus;
wsprintf(szWork, TEXT("使用中電源\t: %s"), pszACLineStatus[i]);
DrawText(ps->hdc, szWork, -1, &rc, DT_LEFT | DT_EXPANDTABS);
rc.top += 15;
rc.bottom = rc.top + 14;
DrawText(ps->hdc, TEXT("《メインバッテリ》"), -1, &rc, DT_LEFT | DT_EXPANDTABS);
rc.top += 15;
rc.bottom = rc.top + 14;
// what's the current battery charge status?
if(SysStatus.BatteryFlag == 255)
{
i = 5;
}
else
{
BYTE BatteryFlag = SysStatus.BatteryFlag;
for(i = 0; i < 8; i++, BatteryFlag >>= 1)
{
if(BatteryFlag & 1)
break;
}
if(i > 4) i = 4;
}
wsprintf(szWork, TEXT("バッテリ状態\t: %s"), pszBatteryStatus[i]);
DrawText(ps->hdc, szWork, -1, &rc, DT_LEFT | DT_EXPANDTABS);
// % battery life remaining.
rc.top += 15;
rc.bottom = rc.top + 14;
wcscpy(szWork, TEXT("残量比率\t: "));
if(SysStatus.BatteryLifePercent == 255)
wcscat(szWork, szUnknown);
else
wsprintf(&szWork[wcslen(szWork)], TEXT("%d%%"), SysStatus.BatteryLifePercent);
DrawText(ps->hdc, szWork, -1, &rc, DT_LEFT | DT_EXPANDTABS);
// number of seconds of battery life remaining
rc.top += 15;
rc.bottom = rc.top + 14;
wcscpy(szWork, TEXT("残り時間\t: "));
if(SysStatus.BatteryLifeTime == 0xFFFFFFFF)
wcscat(szWork, szUnknown);
else
wsprintf(&szWork[wcslen(szWork)], TEXT("%d時間%d分%d秒"),
SysStatus.BatteryLifeTime/(60*60), SysStatus.BatteryLifeTime%(60*60)/60, SysStatus.BatteryLifeTime%60);
DrawText(ps->hdc, szWork, -1, &rc, DT_LEFT | DT_EXPANDTABS);
// total number of seconds of battery life
rc.top += 15;
rc.bottom = rc.top + 14;
wcscpy(szWork, TEXT("総駆動時間\t: "));
if(SysStatus.BatteryFullLifeTime == 0xFFFFFFFF)
wcscat(szWork, szUnknown);
else
wsprintf(&szWork[wcslen(szWork)], TEXT("%d時間%d分%d秒"),
SysStatus.BatteryFullLifeTime/(60*60), SysStatus.BatteryFullLifeTime%(60*60)/60, SysStatus.BatteryFullLifeTime%60);
DrawText(ps->hdc, szWork, -1, &rc, DT_LEFT | DT_EXPANDTABS);
rc.top += 15;
rc.bottom = rc.top + 14;
DrawText(ps->hdc, TEXT("《バックアップバッテリ》"), -1, &rc, DT_LEFT | DT_EXPANDTABS);
rc.top += 15;
rc.bottom = rc.top + 14;
switch (SysStatus.BackupBatteryFlag)
{
case BATTERY_FLAG_HIGH:
i = 0;
break;
case BATTERY_FLAG_LOW:
i = 1;
break;
case BATTERY_FLAG_CRITICAL:
i = 2;
break;
case BATTERY_FLAG_CHARGING:
i = 3;
break;
case BATTERY_FLAG_NO_BATTERY:
i = 4;
break;
case BATTERY_FLAG_UNKNOWN:
default:
i = 5;
break;
}
wsprintf(szWork, TEXT("バッテリ状態\t: %s"), pszBatteryStatus[i]);
DrawText(ps->hdc, szWork, -1, &rc, DT_LEFT | DT_EXPANDTABS);
// % backup battery life remaining.
rc.top += 15;
rc.bottom = rc.top + 14;
wcscpy(szWork, TEXT("残量比率\t: "));
if(SysStatus.BackupBatteryLifePercent == BATTERY_PERCENTAGE_UNKNOWN)
wcscat(szWork, szUnknown);
else
wsprintf(&szWork[wcslen(szWork)], TEXT("%d%%"), SysStatus.BackupBatteryLifePercent);
DrawText(ps->hdc, szWork, -1, &rc, DT_LEFT | DT_EXPANDTABS);
// number of seconds of backup battery life remaining
rc.top += 15;
rc.bottom = rc.top + 14;
wcscpy(szWork, TEXT("残り時間\t: "));
if(SysStatus.BackupBatteryLifeTime == BATTERY_LIFE_UNKNOWN)
wcscat(szWork, szUnknown);
else
wsprintf(&szWork[wcslen(szWork)], TEXT("%d時間%d分%d秒"),
SysStatus.BackupBatteryLifeTime/(60*60), SysStatus.BackupBatteryLifeTime%(60*60)/60, SysStatus.BackupBatteryLifeTime%60);
DrawText(ps->hdc, szWork, -1, &rc, DT_LEFT | DT_EXPANDTABS);
// total number of seconds of backup battery life
rc.top += 15;
rc.bottom = rc.top + 14;
wcscpy(szWork, TEXT("総駆動時間\t: "));
if(SysStatus.BackupBatteryFullLifeTime == BATTERY_LIFE_UNKNOWN)
wcscat(szWork, szUnknown);
else
wsprintf(&szWork[wcslen(szWork)], TEXT("%d時間%d分%d秒"),
SysStatus.BackupBatteryFullLifeTime/(60*60), SysStatus.BackupBatteryFullLifeTime%(60*60)/60, SysStatus.BackupBatteryFullLifeTime%60);
DrawText(ps->hdc, szWork, -1, &rc, DT_LEFT | DT_EXPANDTABS);
return TRUE;
}