122 lines
2.9 KiB
C
122 lines
2.9 KiB
C
|
//*****************************************************************************
|
||
|
//
|
||
|
// BMTEST.C
|
||
|
//
|
||
|
// DESCRIPTION:
|
||
|
//
|
||
|
//
|
||
|
//*****************************************************************************
|
||
|
|
||
|
#include <nt.h>
|
||
|
#include <ntrtl.h>
|
||
|
#include <nturtl.h>
|
||
|
|
||
|
#include <windows.h>
|
||
|
#include <initguid.h>
|
||
|
#include <devguid.h>
|
||
|
#include <commctrl.h>
|
||
|
|
||
|
typedef LONG NTSTATUS;
|
||
|
|
||
|
#include <cfgmgr32.h>
|
||
|
#include <devioctl.h>
|
||
|
#include <ntpoapi.h>
|
||
|
#include <poclass.h>
|
||
|
|
||
|
#include "batmeter.h"
|
||
|
#include "bmtresid.h"
|
||
|
|
||
|
ULONG _cdecl DbgPrint(PCH Format, ...);
|
||
|
|
||
|
HINSTANCE g_hInstance;
|
||
|
|
||
|
DWORD g_dwCurBat; // Battery we're currently displaying/editing.
|
||
|
PUINT g_puiBatCount;
|
||
|
BOOL g_bShowMulti;
|
||
|
|
||
|
LRESULT CALLBACK DlgProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
||
|
|
||
|
int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdLine, int nCmdShow)
|
||
|
{
|
||
|
BOOL Result;
|
||
|
DWORD Version, dwByteCount;
|
||
|
|
||
|
|
||
|
InitCommonControls();
|
||
|
|
||
|
g_hInstance = hInstance;
|
||
|
|
||
|
// Get the battery count.
|
||
|
if (BatMeterCapabilities(&g_puiBatCount)) {
|
||
|
DialogBox(hInstance,
|
||
|
MAKEINTRESOURCE(IDD_BMTEST),
|
||
|
0,
|
||
|
DlgProc);
|
||
|
}
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
//*****************************************************************************
|
||
|
//
|
||
|
// DlgProc
|
||
|
//
|
||
|
// DESCRIPTION:
|
||
|
//
|
||
|
// PARAMETERS:
|
||
|
//
|
||
|
//*****************************************************************************
|
||
|
|
||
|
LRESULT CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||
|
{
|
||
|
static HWND hwndBatMeter;
|
||
|
|
||
|
switch (uMsg) {
|
||
|
case WM_INITDIALOG:
|
||
|
if (*g_puiBatCount > 1) {
|
||
|
CheckDlgButton(hDlg, IDC_ENABLEMULTI, g_bShowMulti);
|
||
|
}
|
||
|
else {
|
||
|
// Battery meter will not run, disable the enable checkbox
|
||
|
EnableWindow(GetDlgItem(hDlg, IDC_ENABLEMULTI), FALSE);
|
||
|
}
|
||
|
hwndBatMeter = CreateBatMeter(hDlg, GetDlgItem(hDlg, IDC_STATIC_FRAME),
|
||
|
g_bShowMulti, NULL);
|
||
|
return TRUE;
|
||
|
|
||
|
case WM_COMMAND:
|
||
|
switch (wParam) {
|
||
|
|
||
|
case IDCANCEL:
|
||
|
case IDOK:
|
||
|
EndDialog(hDlg, 0);
|
||
|
return TRUE ;
|
||
|
|
||
|
case IDC_ENABLEMULTI:
|
||
|
if (IsDlgButtonChecked(hDlg, IDC_ENABLEMULTI)) {
|
||
|
g_bShowMulti = TRUE;
|
||
|
}
|
||
|
else {
|
||
|
g_bShowMulti = FALSE;
|
||
|
}
|
||
|
UpdateBatMeter(hwndBatMeter, g_bShowMulti, TRUE, NULL);
|
||
|
|
||
|
} // switch (wParam)
|
||
|
break;
|
||
|
|
||
|
case WM_POWERBROADCAST:
|
||
|
if (wParam == PBT_APMPOWERSTATUSCHANGE) {
|
||
|
UpdateBatMeter(hwndBatMeter, g_bShowMulti, FALSE, NULL);
|
||
|
}
|
||
|
break;
|
||
|
|
||
|
case WM_DEVICECHANGE:
|
||
|
BatMeterDeviceChanged(0, 0);
|
||
|
break;
|
||
|
|
||
|
} // switch (uMsg)
|
||
|
|
||
|
return FALSE ;
|
||
|
}
|
||
|
|
||
|
|