|
|
/*******************************************************************************
* * (C) COPYRIGHT MICROSOFT CORP., 1993-1994 * * TITLE: BATMETER.H * * VERSION: 2.0 * * AUTHOR: ReedB * * DATE: 31 Dec 1993 * * *******************************************************************************/
// Private BatMeter window message.
#define WM_DESTROYBATMETER WM_USER+100
#ifndef ARRAYSIZE
#define ARRAYSIZE(x) (sizeof(x)/sizeof(x[0]))
#endif
// This structure encapsulates what is displayed for each battery
// and the composite system.
typedef struct _BATTERY_STATE{ ULONG ulSize; // Size of structure.
struct _BATTERY_STATE *bsNext; // Next in list
struct _BATTERY_STATE *bsPrev; // Previous in list
ULONG ulBatNum; // Display battery number.
ULONG ulTag; // Zero implies no battery.
HANDLE hDevice; // Handle to the battery device.
#ifdef WINNT
HDEVNOTIFY hDevNotify; // Device notification handle.
#endif
UINT uiIconIDcache; // Cache of the last Icon ID.
HICON hIconCache; // Cache of the last Icon handle.
HICON hIconCache16; // As above but 16x16.
LPTSTR lpszDeviceName; // The name of the battery device
ULONG ulFullChargedCapacity; // Same as PBATTERY_INFORMATION->FullChargedCapacity.
ULONG ulPowerState; // Same flags as PBATTERY_STATUS->PowerState.
ULONG ulBatLifePercent; // Battery life remaining as percentage.
ULONG ulBatLifeTime; // Battery life remaining as time in seconds.
ULONG ulLastTag; // Previous value of ulTag.
ULONG ulLastPowerState; // Previous value of ulPowerState.
ULONG ulLastBatLifePercent; // Previous value of ulBatLifePercent.
ULONG ulLastBatLifeTime; // Previous value of ulBatLifeTime.
} BATTERY_STATE, *PBATTERY_STATE;
// Power management UI help file:
#define PWRMANHLP TEXT("PWRMN.HLP")
// Number of batteries that battery meter can display.
#define NUM_BAT 8
#define BATTERY_RELATED_FLAGS (BATTERY_FLAG_HIGH | BATTERY_FLAG_LOW | BATTERY_FLAG_CRITICAL | BATTERY_FLAG_CHARGING | BATTERY_FLAG_NO_BATTERY)
// Public function prototypes:
BOOL PowerCapabilities(); BOOL BatMeterCapabilities(PUINT*); BOOL UpdateBatMeter(HWND, BOOL, BOOL, PBATTERY_STATE); HWND CreateBatMeter(HWND, HWND, BOOL, PBATTERY_STATE); HWND DestroyBatMeter(HWND);
// DisplayFreeStr bFree parameters:
#define FREE_STR TRUE
#define NO_FREE_STR FALSE
// Private functions implemented in BATMETER.C
LPTSTR CDECL LoadDynamicString( UINT StringID, ... ); LPTSTR DisplayFreeStr(HWND, UINT, LPTSTR, BOOL); LRESULT CALLBACK BatMeterDlgProc(HWND, UINT, WPARAM, LPARAM); BOOL SwitchDisplayMode(HWND, BOOL); BOOL UpdateBatMeterProc(PBATTERY_STATE, HWND, LPARAM, LPARAM); UINT GetBatteryDriverNames(LPTSTR*); BOOL UpdateDriverList(LPTSTR*, UINT); VOID FreeBatteryDriverNames(LPTSTR*); UINT MapBatInfoToIconID(PBATTERY_STATE); HICON PASCAL GetBattIcon(HWND, UINT, HICON, BOOL, UINT);
// Private functions implemented in DETAILS.C
LRESULT CALLBACK BatDetailDlgProc(HWND, UINT, WPARAM, LPARAM);
// WalkBatteryState pbsStart parameters:
#define ALL &g_bs
#define DEVICES g_bs.bsNext
// WalkBatteryState enum proc declaration.
typedef LRESULT (CALLBACK *WALKENUMPROC)(PBATTERY_STATE, HWND, LPARAM, LPARAM);
// RemoveMissingProc lParam2 parameters:
#define REMOVE_MISSING 0
#define REMOVE_ALL 1
// Private functions implemented in BATSTATE.C
BOOL WalkBatteryState(PBATTERY_STATE, WALKENUMPROC, HWND, LPARAM, LPARAM); BOOL RemoveBatteryStateDevice(PBATTERY_STATE); BOOL RemoveMissingProc(PBATTERY_STATE, HWND, LPARAM, LPARAM); BOOL FindNameProc(PBATTERY_STATE, HWND, LPARAM, LPARAM); BOOL UpdateBatInfoProc(PBATTERY_STATE, HWND, LPARAM, LPARAM); BOOL SimUpdateBatInfoProc(PBATTERY_STATE, HWND, LPARAM, LPARAM);
void SystemPowerStatusToBatteryState(LPSYSTEM_POWER_STATUS, PBATTERY_STATE);
PBATTERY_STATE AddBatteryStateDevice(LPTSTR, ULONG); PBATTERY_STATE SimAddBatteryStateDevice(LPTSTR, ULONG);
#ifdef DBG
#define BATTRACE(_ARGS) DbgPrint _ARGS
#else
#define BATTRACE
#endif
|