📄 misc.c
字号:
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
$Id: Misc.c,v 1.18 2002/10/29 17:06:05 wjb Exp $
____________________________________________________________________________*/
#include <windows.h>
#include <stdio.h>
#include "PGPadmin.h"
#include "Utils.h"
#include "resource.h"
#include "PGPadminHelp.h"
#include "pgpClientLib.h"
#include "pgpNetPrefs.h"
#include "pgpHashPrefs.h"
static void sInitGUI(HWND hwndDlg, pgpConfigInfo *pConfig);
static DWORD aHelpIds[] = {
IDC_ALLOW_CONVENTIONAL, IDH_PGPADMIN_ALLOW_CONVENTIONAL,
IDC_ALLOWENCRYPT, IDH_PGPADMIN_ALLOW_ENCRYPTINVALID,
IDC_ALLOWSIGN, IDH_PGPADMIN_ALLOW_KEYSIGNING,
IDC_ADDEXCH, IDH_PGPADMIN_ADD_EXCHANGEID,
IDC_ADDLOTUS, IDH_PGPADMIN_ADD_LOTUSID,
IDC_DISKCREATE, IDH_PGPADMIN_DISK_CREATE,
IDC_DISKSIZEEDIT, IDH_PGPADMIN_DISK_SIZE,
IDC_DISKSIZECOMBO, IDH_PGPADMIN_DISK_SIZE,
IDC_COMBODISKFS, IDH_PGPADMIN_DISK_FILESYSTEM,
IDC_DISKALGCOMBO, IDH_PGPADMIN_DISK_ALGORITHM,
0,0
};
#define kDiskFat12FileSys 0
#define kDiskFat16FileSys 1
#define kDiskFat12Or16FileSys 2
#define kDiskFat32FileSys 3
#define kDiskNTFSFileSys 4
#define kDiskUnknownFileSys 5
#define kDiskInvalidAlgorithm 0
#define kDiskCopyDataAlgorithm 1
#define kDiskOldCAST5Algorithm 2
#define kDiskCAST5Algorithm 3
#define kDiskTwoFishAlgorithm 4
#define kDiskAESAlgorithm 5
typedef struct
{
TCHAR *wszString;
PGPUInt32 iType;
} STRINGINFO;
static STRINGINFO AlgInfo[]={
{TEXT("CAST5"),kDiskCAST5Algorithm},
{TEXT("Twofish"),kDiskTwoFishAlgorithm}};
static STRINGINFO SizeInfo[]={
{TEXT("KB"),1024/512},
{TEXT("MB"),1024*1024/512},
{TEXT("GB"),1024*1024*1024/512}};
static STRINGINFO FSInfo[]={
{TEXT("FAT12"),kDiskFat12FileSys},
{TEXT("FAT16"),kDiskFat16FileSys},
{TEXT("FAT32"),kDiskFat32FileSys},
{TEXT("NTFS"),kDiskNTFSFileSys}};
BOOL CALLBACK MiscDlgProc(HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
BOOL bReturnCode = FALSE;
pgpConfigInfo * pConfig = NULL;
g_hCurrentDlgWnd = hwndDlg;
pConfig = (pgpConfigInfo *) GetWindowLong(hwndDlg, GWL_USERDATA);
switch(uMsg)
{
case WM_INITDIALOG:
{
int i,AlgSel,FSSel,SizeSel;
HWND hwndAlgCombo,hwndFSCombo,hwndSizeCombo;
char szSize[100];
CommonDlgProc(hwndDlg, uMsg, wParam, lParam);
pConfig = (pgpConfigInfo *) GetWindowLong(hwndDlg, GWL_USERDATA);
SendDlgItemMessage(hwndDlg, IDC_COMMENTS, EM_SETLIMITTEXT, 60, 0);
FSSel=AlgSel=SizeSel=0;
hwndAlgCombo=GetDlgItem(hwndDlg,IDC_DISKALGCOMBO);
for(i=0;i<(sizeof(AlgInfo)/sizeof(STRINGINFO));i++)
{
SendMessage (hwndAlgCombo, CB_ADDSTRING, 0, (LPARAM)AlgInfo[i].wszString);
if(AlgInfo[i].iType==pConfig->nDiskAlgorithm)
AlgSel=i;
}
SendMessage (hwndAlgCombo, CB_SETCURSEL, AlgSel, (LPARAM)0);
pConfig->nDiskAlgorithm=AlgInfo[AlgSel].iType;
hwndFSCombo=GetDlgItem(hwndDlg,IDC_COMBODISKFS);
for(i=0;i<(sizeof(FSInfo)/sizeof(STRINGINFO));i++)
{
SendMessage (hwndFSCombo, CB_ADDSTRING, 0, (LPARAM)FSInfo[i].wszString);
if(FSInfo[i].iType==pConfig->nDiskFileSystem)
FSSel=i;
}
SendMessage (hwndFSCombo, CB_SETCURSEL, FSSel, (LPARAM)0);
hwndSizeCombo=GetDlgItem(hwndDlg,IDC_DISKSIZECOMBO);
for(i=0;i<(sizeof(SizeInfo)/sizeof(STRINGINFO));i++)
{
SendMessage (hwndSizeCombo, CB_ADDSTRING, 0, (LPARAM)SizeInfo[i].wszString);
if((pConfig->nDiskSize%SizeInfo[i].iType)==0)
SizeSel=i;
}
SendMessage (hwndSizeCombo, CB_SETCURSEL, SizeSel, (LPARAM)0);
wsprintf(szSize,"%d",pConfig->nDiskSize/SizeInfo[SizeSel].iType);
SetWindowText(GetDlgItem(hwndDlg,IDC_DISKSIZEEDIT),szSize);
sInitGUI(hwndDlg, pConfig);
break;
}
case WM_HELP:
case WM_CONTEXTMENU:
return PGPclHtmlHelp (hwndDlg, uMsg, wParam, lParam,
(char *) kPGPclAdminHelpFile, aHelpIds);
case WM_NOTIFY:
{
LPNMHDR pnmh;
pnmh = (LPNMHDR) lParam;
switch(pnmh->code)
{
case PSN_HELP:
PGPclHtmlHelp (hwndDlg, kPGPclHelpContext, 0, 0,
(char *) kPGPclAdminHelpFile,
(DWORD *) IDH_PGPADMIN_MISCDIALOG);
break;
default:
bReturnCode = CommonDlgProc(hwndDlg, uMsg, wParam, lParam);
break;
}
break;
}
case WM_COMMAND:
switch (LOWORD(wParam))
{
case IDC_ALLOW_CONVENTIONAL:
{
if (IsDlgButtonChecked(hwndDlg, IDC_ALLOW_CONVENTIONAL) ==
BST_CHECKED)
{
pConfig->bAllowConventionalEncryption = TRUE;
}
else
{
pConfig->bAllowConventionalEncryption = FALSE;
}
bReturnCode = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break;
}
case IDC_ALLOWENCRYPT:
{
if (IsDlgButtonChecked(hwndDlg, IDC_ALLOWENCRYPT) ==
BST_CHECKED)
{
pConfig->bAllowEncryptInvalidKeys = TRUE;
}
else
{
pConfig->bAllowEncryptInvalidKeys = FALSE;
}
bReturnCode = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break;
}
case IDC_ALLOWSIGN:
{
if (IsDlgButtonChecked(hwndDlg, IDC_ALLOWSIGN) ==
BST_CHECKED)
{
pConfig->bAllowKeySigning = TRUE;
}
else
{
pConfig->bAllowKeySigning = FALSE;
}
bReturnCode = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break;
}
case IDC_ADDEXCH:
{
if (IsDlgButtonChecked(hwndDlg, IDC_ADDEXCH) ==
BST_CHECKED)
{
pConfig->bAutoAddExchangeServerAddress = TRUE;
}
else
{
pConfig->bAutoAddExchangeServerAddress = FALSE;
}
bReturnCode = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break;
}
case IDC_ADDLOTUS:
{
if (IsDlgButtonChecked(hwndDlg, IDC_ADDLOTUS) ==
BST_CHECKED)
{
pConfig->bAutoAddLotusNotesAddress = TRUE;
}
else
{
pConfig->bAutoAddLotusNotesAddress = FALSE;
}
bReturnCode = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break;
}
case IDC_DISKCREATE:
{
if (IsDlgButtonChecked(hwndDlg, IDC_DISKCREATE) ==
BST_CHECKED)
{
pConfig->bDiskCreate = TRUE;
}
else
{
pConfig->bDiskCreate = FALSE;
}
sInitGUI(hwndDlg, pConfig);
bReturnCode = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break;
}
case IDC_DISKSIZEEDIT:
case IDC_DISKSIZECOMBO:
{
char szSize[100];
PGPUInt32 uSize;
PGPUInt32 mult;
GetWindowText(GetDlgItem(hwndDlg,IDC_DISKSIZEEDIT),
szSize,100);
uSize=atoi(szSize);
mult=SendMessage(GetDlgItem(hwndDlg,IDC_DISKSIZECOMBO),
CB_GETCURSEL,0,0);
uSize=uSize*SizeInfo[mult].iType;
pConfig->nDiskSize=uSize;
bReturnCode = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break;
}
case IDC_COMBODISKFS:
{
PGPUInt32 uFS;
uFS=SendMessage(GetDlgItem(hwndDlg,IDC_COMBODISKFS),
CB_GETCURSEL,0,0);
pConfig->nDiskFileSystem=FSInfo[uFS].iType;
bReturnCode = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break;
}
case IDC_DISKALGCOMBO:
{
PGPUInt32 uAlg;
uAlg=SendMessage(GetDlgItem(hwndDlg,IDC_DISKALGCOMBO),
CB_GETCURSEL,0,0);
pConfig->nDiskAlgorithm=AlgInfo[uAlg].iType;
bReturnCode = TRUE;
PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
break;
}
}
break;
default:
bReturnCode = CommonDlgProc(hwndDlg, uMsg, wParam, lParam);
break;
}
return(bReturnCode);
}
static void sInitGUI(HWND hwndDlg, pgpConfigInfo *pConfig)
{
if (pConfig->bAllowConventionalEncryption)
CheckDlgButton(hwndDlg, IDC_ALLOW_CONVENTIONAL, BST_CHECKED);
else
CheckDlgButton(hwndDlg, IDC_ALLOW_CONVENTIONAL, BST_UNCHECKED);
if (pConfig->bAllowEncryptInvalidKeys)
CheckDlgButton(hwndDlg, IDC_ALLOWENCRYPT, BST_CHECKED);
else
CheckDlgButton(hwndDlg, IDC_ALLOWENCRYPT, BST_UNCHECKED);
if (pConfig->bAllowKeySigning)
CheckDlgButton(hwndDlg, IDC_ALLOWSIGN, BST_CHECKED);
else
CheckDlgButton(hwndDlg, IDC_ALLOWSIGN, BST_UNCHECKED);
if (pConfig->bDiskCreate)
{
CheckDlgButton(hwndDlg, IDC_DISKCREATE, BST_CHECKED);
EnableWindow(GetDlgItem(hwndDlg, IDC_DISKSIZEEDIT), TRUE);
EnableWindow(GetDlgItem(hwndDlg, IDC_DISKSIZECOMBO), TRUE);
EnableWindow(GetDlgItem(hwndDlg, IDC_COMBODISKFS), TRUE);
EnableWindow(GetDlgItem(hwndDlg, IDC_DISKALGCOMBO), TRUE);
EnableWindow(GetDlgItem(hwndDlg, IDC_DISKSIZESTATIC), TRUE);
EnableWindow(GetDlgItem(hwndDlg, IDC_DISKFSSTATIC), TRUE);
EnableWindow(GetDlgItem(hwndDlg, IDC_DISKALGSTATIC), TRUE);
}
else
{
CheckDlgButton(hwndDlg, IDC_DISKCREATE, BST_UNCHECKED);
EnableWindow(GetDlgItem(hwndDlg, IDC_DISKSIZEEDIT), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_DISKSIZECOMBO), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_COMBODISKFS), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_DISKALGCOMBO), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_DISKSIZESTATIC), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_DISKFSSTATIC), FALSE);
EnableWindow(GetDlgItem(hwndDlg, IDC_DISKALGSTATIC), FALSE);
}
if (pConfig->bAutoAddExchangeServerAddress)
CheckDlgButton(hwndDlg, IDC_ADDEXCH, BST_CHECKED);
else
CheckDlgButton(hwndDlg, IDC_ADDEXCH, BST_UNCHECKED);
if (pConfig->bAutoAddLotusNotesAddress)
CheckDlgButton(hwndDlg, IDC_ADDLOTUS, BST_CHECKED);
else
CheckDlgButton(hwndDlg, IDC_ADDLOTUS, BST_UNCHECKED);
return;
}
/*__Editor_settings____
Local Variables:
tab-width: 4
End:
vi: ts=4 sw=4
vim: si
_____________________*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -