/* Property page dialog callback */ INT_PTR CALLBACK AdvancedDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { switch(uMsg) { case WM_INITDIALOG: hAdv = hwndDlg; Adv_InitDialog(); return TRUE; break; case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_SYSTRAYBATTERYMETER: case IDC_PASSWORDLOGON: case IDC_VIDEODIMDISPLAY: if (HIWORD(wParam) == BN_CLICKED) { PropSheet_Changed(GetParent(hwndDlg), hwndDlg); } break; case IDC_LIDCLOSE: case IDC_POWERBUTTON: case IDC_SLEEPBUTTON: if (HIWORD(wParam) == CBN_SELCHANGE) { PropSheet_Changed(GetParent(hwndDlg), hwndDlg); } break; } break; case WM_NOTIFY: { LPNMHDR lpnm = (LPNMHDR)lParam; if (lpnm->code == (UINT)PSN_APPLY) { Adv_SaveData(hwndDlg); } return TRUE; } } return FALSE; }
INT_PTR Hib_SaveData(HWND hwndDlg) { BOOLEAN bHibernate; bHibernate = (BOOLEAN)(IsDlgButtonChecked(hwndDlg, IDC_HIBERNATEFILE) == BST_CHECKED); if (CallNtPowerInformation(SystemReserveHiberFile,&bHibernate, sizeof(bHibernate), NULL, 0) == STATUS_SUCCESS) { Pos_InitData(); Adv_InitDialog(); Hib_InitDialog(hwndDlg); return TRUE; } return FALSE; }
static VOID Adv_SaveData(HWND hwndDlg) { BOOL bSystrayBatteryMeter; BOOL bPasswordLogon; BOOL bVideoDimDisplay; bSystrayBatteryMeter = (IsDlgButtonChecked(hwndDlg, IDC_SYSTRAYBATTERYMETER) == BST_CHECKED); bPasswordLogon = (IsDlgButtonChecked(hwndDlg, IDC_PASSWORDLOGON) == BST_CHECKED); bVideoDimDisplay = (IsDlgButtonChecked(hwndDlg, IDC_VIDEODIMDISPLAY) == BST_CHECKED); if (bSystrayBatteryMeter) { if (!(gGPP.user.GlobalFlags & EnableSysTrayBatteryMeter)) { gGPP.user.GlobalFlags = gGPP.user.GlobalFlags + EnableSysTrayBatteryMeter; } } else { if ((gGPP.user.GlobalFlags & EnableSysTrayBatteryMeter)) { gGPP.user.GlobalFlags = gGPP.user.GlobalFlags - EnableSysTrayBatteryMeter; } } if (bPasswordLogon) { if (!(gGPP.user.GlobalFlags & EnablePasswordLogon)) { gGPP.user.GlobalFlags = gGPP.user.GlobalFlags + EnablePasswordLogon; } } else { if ((gGPP.user.GlobalFlags & EnablePasswordLogon)) { gGPP.user.GlobalFlags = gGPP.user.GlobalFlags - EnablePasswordLogon; } } if (bVideoDimDisplay) { if (!(gGPP.user.GlobalFlags & EnableVideoDimDisplay)) { gGPP.user.GlobalFlags = gGPP.user.GlobalFlags + EnableVideoDimDisplay; } } else { if ((gGPP.user.GlobalFlags & EnableVideoDimDisplay)) { gGPP.user.GlobalFlags = gGPP.user.GlobalFlags - EnableVideoDimDisplay; } } if (!IsBatteryUsed()) { SaveCurrentPowerActionPolicy(GetDlgItem(hwndDlg, IDC_POWERBUTTON), &gGPP.user.PowerButtonAc); #if 0 SaveCurrentPowerActionPolicy(GetDlgItem(hwndDlg, IDC_LIDCLOSE), &gGPP.user.LidCloseAc); SaveCurrentPowerActionPolicy(GetDlgItem(hwndDlg, IDC_SLEEPBUTTON), &gGPP.user.SleepButtonAc); #endif } else { #if 0 SaveCurrentPowerActionPolicy(GetDlgItem(hwndDlg, IDC_POWERBUTTON), &gGPP.user.PowerButtonDc); SaveCurrentPowerActionPolicy(GetDlgItem(hwndDlg, IDC_LIDCLOSE), &gGPP.user.LidCloseDc); SaveCurrentPowerActionPolicy(GetDlgItem(hwndDlg, IDC_SLEEPBUTTON), &gGPP.user.SleepButtonDc); #endif } if (!WriteGlobalPwrPolicy(&gGPP)) { MessageBox(hwndDlg, L"WriteGlobalPwrPolicy failed", NULL, MB_OK); } Adv_InitDialog(); }