clprefsdisk.c
来自「PGP8.0源码 请认真阅读您的文件包然后写出其具体功能」· C语言 代码 · 共 246 行
C
246 行
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
CLprefsDisk.c - handle PGPdisk preferences dialog
$Id: CLprefsDisk.c,v 1.13 2002/08/06 20:09:19 dallen Exp $
____________________________________________________________________________*/
#include "pgpPFLConfig.h"
// project header files
#include "PGPclx.h"
#include "PGPdiskHelp.h"
#include "CLprefs.h"
// definitions
#define kMaxMinutesTimeout 999
#define kMaxMinutesTimeoutDigits 3
// external globals
extern HINSTANCE g_hInst;
static DWORD aDiskIds[] = { // Help IDs
IDC_ALLOWFORCE_CHECK, IDH_PGPCLPREF_DISKALLOWFORCIBLEUNMOUNTS,
IDC_ALWAYSFORCE_CHECK, IDH_PGPCLPREF_DISKALWAYSFORCEUNMOUNTS,
IDC_UNMOUNT_CHECK, IDH_PGPCLPREF_DISKAUTOUNMOUNT,
IDC_MINUTES_EDIT, IDH_PGPCLPREF_DISKAUTOUNMOUNTMINS,
IDC_SLEEP_CHECK, IDH_PGPCLPREF_DISKUNMOUNTONSLEEP,
IDC_PREVENT_CHECK, IDH_PGPCLPREF_DISKPREVENTSLEEP,
IDC_MOUNTBROWSE_CHECK, IDH_PGPCLPREF_DISKBROWSEONMOUNT,
IDC_WARNDEL_CHECK, IDH_PGPCLPREF_DISKWARNONDELETE,
0,0
};
// _____________________________________________________
//
// Message processing function for PGPdisk prefs property sheet
LRESULT WINAPI
CLDiskPropDlgProc (
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
static BOOL noSleep = FALSE, noPrevent = FALSE;
PPREFSDLGSTRUCT ppds;
switch (uMsg) {
case WM_INITDIALOG:
{
OSVERSIONINFO osvi;
PGPUInt32 u;
PGPPrefRef prefref;
SetWindowLong (hwnd, GWL_USERDATA, ((PROPSHEETPAGE*)lParam)->lParam);
ppds = (PPREFSDLGSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
if (ppds->bNeedsCentering)
{
PGPclCenterWindowOnMonitor (GetParent (hwnd), kPGPclWindowMonitor);
ppds->bNeedsCentering = FALSE;
}
prefref = CLGetPrefRef (ppds);
// initialize auto-unmount minute control
SendDlgItemMessage (hwnd, IDC_MINUTES_EDIT, EM_SETLIMITTEXT,
kMaxMinutesTimeoutDigits, 0);
SendDlgItemMessage (hwnd, IDC_MINUTES_UDCTRL, UDM_SETRANGE,
0, (LPARAM)MAKELONG (kMaxMinutesTimeout, 1));
PGPGetPrefNumber (prefref, kPGPPrefDiskAutoUnmountTimeout, &u);
SendDlgItemMessage (hwnd, IDC_MINUTES_UDCTRL, UDM_SETPOS,
0, (LPARAM)MAKELONG (u, 0));
CLDisablePrefControl (hwnd, IDC_MINUTES_EDIT, ppds,
prefref, kPGPPrefDiskAutoUnmountTimeout);
// initialize checkboxes
CLLoadCheckBoxPref (hwnd, IDC_ALWAYSFORCE_CHECK,
ppds, prefref, kPGPPrefDiskAlwaysForceUnmounts);
if (!CLLoadCheckBoxPref (hwnd, IDC_ALLOWFORCE_CHECK,
ppds, prefref, kPGPPrefDiskAllowForcibleUnmounts))
{
EnableWindow (GetDlgItem (hwnd, IDC_ALWAYSFORCE_CHECK), FALSE);
}
if (!CLLoadCheckBoxPref (hwnd, IDC_UNMOUNT_CHECK,
ppds, prefref, kPGPPrefDiskUnmountOnInactivity))
{
EnableWindow (GetDlgItem (hwnd, IDC_MINUTES_EDIT), FALSE);
}
CLLoadCheckBoxPref (hwnd, IDC_PREVENT_CHECK,
ppds, prefref, kPGPPrefDiskNoSleepIfFailAU);
if (!CLLoadCheckBoxPref (hwnd, IDC_SLEEP_CHECK,
ppds, prefref, kPGPPrefDiskAutoUnmountOnSleep))
{
EnableWindow (GetDlgItem (hwnd, IDC_PREVENT_CHECK), FALSE);
}
// CLLoadCheckBoxPref (hwnd, IDC_MOUNTBROWSE_CHECK,
// ppds, prefref, kPGPPrefDiskBrowseAfterMount);
osvi.dwOSVersionInfoSize = sizeof(osvi);
if (GetVersionEx (&osvi))
{
if ((osvi.dwPlatformId == VER_PLATFORM_WIN32_NT) &&
(osvi.dwMajorVersion < 5))
{
// no sleep options under NT4
noSleep = noPrevent = TRUE;
EnableWindow(GetDlgItem(hwnd, IDC_SLEEP_CHECK), FALSE);
CheckDlgButton (hwnd, IDC_SLEEP_CHECK, BST_UNCHECKED);
EnableWindow(GetDlgItem(hwnd, IDC_PREVENT_CHECK), FALSE);
CheckDlgButton (hwnd, IDC_PREVENT_CHECK, BST_UNCHECKED);
}
else if ((osvi.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS) &&
(osvi.dwMinorVersion == 0))
{
// no prevent sleep option under Win95
noPrevent = TRUE;
EnableWindow(GetDlgItem(hwnd, IDC_PREVENT_CHECK), FALSE);
CheckDlgButton (hwnd, IDC_PREVENT_CHECK, BST_UNCHECKED);
}
}
return TRUE;
}
case WM_HELP :
case WM_CONTEXTMENU :
return PGPclHtmlHelp (hwnd, uMsg, wParam, lParam,
(char*)kPGPclDiskHelpFile, aDiskIds);
case WM_COMMAND :
{
PGPPrefRef prefref;
ppds = (PPREFSDLGSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
switch (LOWORD (wParam)) {
case IDC_ALLOWFORCE_CHECK :
prefref = CLGetPrefRef (ppds);
if (!CLDisablePrefControl (hwnd, IDC_ALWAYSFORCE_CHECK, ppds,
prefref, kPGPPrefDiskAlwaysForceUnmounts))
{
EnableWindow (GetDlgItem (hwnd, IDC_ALWAYSFORCE_CHECK),
IsDlgButtonChecked (hwnd, IDC_ALLOWFORCE_CHECK) == BST_CHECKED);
}
break;
case IDC_UNMOUNT_CHECK :
prefref = CLGetPrefRef (ppds);
if (!CLDisablePrefControl (hwnd, IDC_MINUTES_EDIT, ppds,
prefref, kPGPPrefDiskAutoUnmountTimeout))
{
BOOL b;
b = (IsDlgButtonChecked (hwnd, IDC_UNMOUNT_CHECK) == BST_CHECKED);
EnableWindow (GetDlgItem (hwnd, IDC_MINUTES_EDIT), b);
EnableWindow (GetDlgItem (hwnd, IDC_MINUTES_UDCTRL), b);
}
break;
case IDC_SLEEP_CHECK :
prefref = CLGetPrefRef (ppds);
if (!noPrevent &&
!CLDisablePrefControl (hwnd, IDC_PREVENT_CHECK, ppds,
prefref, kPGPPrefDiskNoSleepIfFailAU))
{
EnableWindow (GetDlgItem (hwnd, IDC_PREVENT_CHECK),
IsDlgButtonChecked (hwnd, IDC_SLEEP_CHECK) == BST_CHECKED);
}
break;
}
break;
}
case WM_NOTIFY :
switch (((NMHDR FAR *) lParam)->code) {
case PSN_HELP :
PGPclHtmlHelp (hwnd, kPGPclHelpContext, 0, 0,
(char*)kPGPclDiskHelpFile,
(DWORD*)IDH_PGPCLPREF_DISKDIALOG);
break;
case PSN_APPLY :
{
PGPUInt32 u;
ppds = (PPREFSDLGSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
if (ppds->bUseClientLibPrefs &&
!PGPPrefRefIsValid (ppds->prefref))
{
PGPclPeekClientLibPrefRefs (&ppds->prefref, NULL);
}
// save checkboxes
CLSaveCheckBoxPref (hwnd, IDC_ALLOWFORCE_CHECK,
ppds->prefref, kPGPPrefDiskAllowForcibleUnmounts);
CLSaveCheckBoxPref (hwnd, IDC_ALWAYSFORCE_CHECK,
ppds->prefref, kPGPPrefDiskAlwaysForceUnmounts);
CLSaveCheckBoxPref (hwnd, IDC_UNMOUNT_CHECK,
ppds->prefref, kPGPPrefDiskUnmountOnInactivity);
CLSaveCheckBoxPref (hwnd, IDC_PREVENT_CHECK,
ppds->prefref, kPGPPrefDiskNoSleepIfFailAU);
CLSaveCheckBoxPref (hwnd, IDC_SLEEP_CHECK,
ppds->prefref, kPGPPrefDiskAutoUnmountOnSleep);
// CLSaveCheckBoxPref (hwnd, IDC_MOUNTBROWSE_CHECK,
// ppds->prefref, kPGPPrefDiskBrowseAfterMount);
// save minutes
u = GetDlgItemInt (hwnd, IDC_MINUTES_EDIT, NULL, FALSE);
if (u < 1)
u = 1;
if (u > kMaxMinutesTimeout)
u = kMaxMinutesTimeout;
PGPclErrorBox (hwnd, PGPSetPrefNumber (ppds->prefref,
kPGPPrefDiskAutoUnmountTimeout, u));
ppds->disk.bPrefsModified = TRUE;
ppds->returnErr = kPGPError_NoErr;
SetWindowLong (hwnd, DWL_MSGRESULT, PSNRET_NOERROR);
return TRUE;
}
}
}
return FALSE;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?