⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 clprefs.c

📁 vc环境下的pgp源码
💻 C
📖 第 1 页 / 共 5 页
字号:
						(LPARAM)&(pcds->stDecryptDuration));
			uEncrypt = pcds->stDecryptDuration.wHour * 3600;
			uEncrypt += (pcds->stDecryptDuration.wMinute * 60);
			uEncrypt += pcds->stDecryptDuration.wSecond;

			SendMessage (pcds->hwndSignDuration, DTM_GETSYSTEMTIME, 0, 
						(LPARAM)&(pcds->stSignDuration));
			uSign = pcds->stSignDuration.wHour * 3600;
			uSign += (pcds->stSignDuration.wMinute * 60);
			uSign += pcds->stSignDuration.wSecond;

			if (IsDlgButtonChecked (hDlg, IDC_ENCRYPTTOSELF) == BST_CHECKED)
				b = TRUE;
			else 
				b = FALSE;
			PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
								kPGPPrefEncryptToSelf, b));
			
			u = 0;
			b = FALSE;
			if (uEncrypt > 0) {
				if (IsDlgButtonChecked (hDlg, IDC_DECRYPTCACHEENABLE) ==
							BST_CHECKED) 
					b = TRUE;
			}
			PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
									kPGPPrefDecryptCacheEnable, b));
			PGPclErrorBox (hDlg, PGPSetPrefNumber (PrefRefClient,
									kPGPPrefDecryptCacheSeconds, uEncrypt));
			if (!b) u |= PGPCL_DECRYPTIONCACHE;

			b = FALSE;
			if (uSign > 0) {
				if (IsDlgButtonChecked (hDlg, IDC_SIGNCACHEENABLE) ==
							BST_CHECKED) 
					b = TRUE;
			}
			PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
									kPGPPrefSignCacheEnable, b));
			PGPclErrorBox (hDlg, PGPSetPrefNumber (PrefRefClient,
									kPGPPrefSignCacheSeconds, uSign));
			if (!b) u |= PGPCL_SIGNINGCACHE;

			if (u != 0)
				PGPclNotifyPurgePassphraseCache (u, 0);
			
			if (!GetDlgItemText (hDlg, IDC_COMMENTBLOCK, sz, sizeof(sz))) {
				sz[0] = '\0';
			}
			PGPclErrorBox (hDlg, PGPSetPrefString (PrefRefClient,
									kPGPPrefComment, sz));
			
			if (IsDlgButtonChecked (hDlg, IDC_USEFASTKEYGEN) ==
						BST_CHECKED) 
				b = TRUE;
			else 
				b = FALSE;
			PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
									kPGPPrefFastKeyGen, b));
            
			if (IsDlgButtonChecked (hDlg, IDC_WIPECONFIRM) ==
						BST_CHECKED) 
				b = TRUE;
			else 
				b = FALSE;
			PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
									kPGPPrefWarnOnWipe, b));

			u = GetDlgItemInt (hDlg, IDC_NUMPASSES, NULL, FALSE);
			if (u < 1) u = 1;
			if (u > MAXWIPEPASSES) u = MAXWIPEPASSES;
			PGPclErrorBox (hDlg, PGPSetPrefNumber (PrefRefClient,
									kPGPPrefFileWipePasses, u));

			returnErr = kPGPError_NoErr;
            SetWindowLong (hDlg, DWL_MSGRESULT, PSNRET_NOERROR);
            return TRUE;

		case PSN_KILLACTIVE :
			pcds = (PCACHEDURATIONSTRUCT)GetWindowLong (hDlg, GWL_USERDATA);

			SendMessage (pcds->hwndDecryptDuration, DTM_GETSYSTEMTIME, 0, 
						(LPARAM)&(pcds->stDecryptDuration));
			uEncrypt = pcds->stDecryptDuration.wHour * 3600;
			uEncrypt += (pcds->stDecryptDuration.wMinute * 60);
			uEncrypt += pcds->stDecryptDuration.wSecond;

			SendMessage (pcds->hwndSignDuration, DTM_GETSYSTEMTIME, 0, 
						(LPARAM)&(pcds->stSignDuration));
			uSign = pcds->stSignDuration.wHour * 3600;
			uSign += (pcds->stSignDuration.wMinute * 60);
			uSign += pcds->stSignDuration.wSecond;

			if (uEncrypt > MAXCACHETIMELIMIT)
			{
				PGPclMessageBox (hDlg, IDS_CAPTION, 
						IDS_INVALIDCACHEVALUE, MB_OK|MB_ICONHAND);
				SetFocus (pcds->hwndDecryptDuration); 
				SetWindowLong (hDlg, DWL_MSGRESULT, TRUE);
				return TRUE;
			}

			if (uSign > MAXCACHETIMELIMIT)
			{
				PGPclMessageBox (hDlg, IDS_CAPTION, 
						IDS_INVALIDCACHEVALUE, MB_OK|MB_ICONHAND);
				SetFocus (pcds->hwndSignDuration); 
				SetWindowLong (hDlg, DWL_MSGRESULT, TRUE);
				return TRUE;
			}

			SetWindowLong (hDlg, DWL_MSGRESULT, FALSE);
			return TRUE;

		case PSN_RESET :
			returnErr = kPGPError_UserAbort;
            SetWindowLong (hDlg, DWL_MSGRESULT, FALSE);
			break;
		}
	}

	return FALSE;

}

//	_____________________________________________________
//
//  Message processing function for property sheet dialog

static LRESULT WINAPI 
sEmailPropDlgProc (
		HWND	hDlg, 
		UINT	uMsg, 
		WPARAM	wParam, 
		LPARAM	lParam) 
{
	PGPBoolean	b;
	UINT		u;

	switch (uMsg) {

	case WM_INITDIALOG:
		if (bNeedsCentering) 
		{
			HWND	hParent;
			RECT	rc;

			hParent = GetParent (hDlg);
			GetWindowRect (hParent, &rc);
			SetWindowPos (hParent, NULL,
				(GetSystemMetrics(SM_CXSCREEN) - (rc.right - rc.left)) / 2,
				(GetSystemMetrics(SM_CYSCREEN) - (rc.bottom - rc.top)) / 3,
				0, 0, SWP_NOSIZE | SWP_NOZORDER);
			bNeedsCentering = FALSE;
		}
	
		b = DEFAULT_MAILENCRYPTPGPMIME;
		PGPGetPrefBoolean (PrefRefClient, kPGPPrefMailEncryptPGPMIME, &b);
		if (b) CheckDlgButton (hDlg, IDC_ENCRYPTPGPMIME, BST_CHECKED);
		else CheckDlgButton (hDlg, IDC_ENCRYPTPGPMIME, BST_UNCHECKED);

		u = DEFAULT_WORDWRAPWIDTH;
		PGPGetPrefNumber (PrefRefClient, kPGPPrefWordWrapWidth, &u);
		SetDlgItemInt (hDlg, IDC_WRAPNUMBER, u, FALSE);

		b = DEFAULT_WORDWRAPENABLE;
		PGPGetPrefBoolean (PrefRefClient, kPGPPrefWordWrapEnable, &b);
		if (b) {
			CheckDlgButton (hDlg, IDC_WRAPENABLE, BST_CHECKED);
			EnableWindow (GetDlgItem (hDlg, IDC_WRAPNUMBER), TRUE);
		}
		else {
			CheckDlgButton (hDlg, IDC_WRAPENABLE, BST_UNCHECKED);
			EnableWindow (GetDlgItem (hDlg, IDC_WRAPNUMBER), FALSE);
		}

		b = DEFAULT_MAILENCRYPTDEFAULT;
		PGPGetPrefBoolean (PrefRefClient, kPGPPrefMailEncryptDefault, &b);
		if (b) CheckDlgButton (hDlg, IDC_ENCRYPTBYDEFAULT, BST_CHECKED);
		else CheckDlgButton (hDlg, IDC_ENCRYPTBYDEFAULT, BST_UNCHECKED);

		b = DEFAULT_MAILSIGNDEFAULT;
		PGPGetPrefBoolean (PrefRefClient, kPGPPrefMailSignDefault, &b);
		if (b) CheckDlgButton (hDlg, IDC_SIGNBYDEFAULT, BST_CHECKED);
		else CheckDlgButton (hDlg, IDC_SIGNBYDEFAULT, BST_UNCHECKED);

		b = DEFAULT_AUTODECRYPT;
		PGPGetPrefBoolean (PrefRefClient, kPGPPrefAutoDecrypt, &b);
		if (b) CheckDlgButton (hDlg, IDC_AUTODECRYPT, BST_CHECKED);
		else CheckDlgButton (hDlg, IDC_AUTODECRYPT, BST_UNCHECKED);

		b = DEFAULT_USESECUREVIEWER;
		PGPGetPrefBoolean (PrefRefClient, kPGPPrefAlwaysUseSecureViewer, &b);
		if (b) CheckDlgButton (hDlg, IDC_USESECUREVIEWER, BST_CHECKED);
		else CheckDlgButton (hDlg, IDC_USESECUREVIEWER, BST_UNCHECKED);

		return TRUE;

    case WM_HELP: 
        WinHelp (((LPHELPINFO) lParam)->hItemHandle, g_szHelpFile, 
            HELP_WM_HELP, (DWORD) (LPSTR) aEmailIds); 
        break; 
 
    case WM_CONTEXTMENU: 
        WinHelp ((HWND) wParam, g_szHelpFile, HELP_CONTEXTMENU, 
            (DWORD) (LPVOID) aEmailIds); 
        break; 

	case WM_COMMAND :
		switch (LOWORD (wParam)) {
		case IDC_WRAPENABLE :
			if (IsDlgButtonChecked (hDlg, IDC_WRAPENABLE) == BST_CHECKED)
				EnableWindow (GetDlgItem (hDlg, IDC_WRAPNUMBER), TRUE);
			else
				EnableWindow (GetDlgItem (hDlg, IDC_WRAPNUMBER), FALSE);
			break;
		}
		break;

	case WM_NOTIFY :
		switch (((NMHDR FAR *) lParam)->code) {
		case PSN_SETACTIVE :
			break;

		case PSN_HELP :
			WinHelp (hDlg, g_szHelpFile, HELP_CONTEXT, 
				IDH_PGPCLPREF_EMAILDIALOG); 
			break;

		case PSN_APPLY :
			if (IsDlgButtonChecked (hDlg, IDC_WRAPENABLE) == BST_CHECKED) 
				b = TRUE;
			else 
				b = FALSE;
			PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
						kPGPPrefWordWrapEnable, b));
			
			if (b) 
			{
				u = GetDlgItemInt (hDlg, IDC_WRAPNUMBER, NULL, FALSE);
				PGPclErrorBox (hDlg, PGPSetPrefNumber (PrefRefClient,
						kPGPPrefWordWrapWidth, u));
			}

			if (IsDlgButtonChecked (hDlg, IDC_ENCRYPTPGPMIME) == BST_CHECKED) 
				b = TRUE;
			else 
				b = FALSE;
			PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
						kPGPPrefMailEncryptPGPMIME, b));
			PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
						kPGPPrefMailSignPGPMIME, b));
						
			if (IsDlgButtonChecked (
						hDlg, IDC_ENCRYPTBYDEFAULT) == BST_CHECKED) 
				b = TRUE;
			else 
				b = FALSE;
			PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
						kPGPPrefMailEncryptDefault, b));
			
			if (IsDlgButtonChecked (hDlg, IDC_SIGNBYDEFAULT) ==  BST_CHECKED) 
				b = TRUE;
			else 
				b = FALSE;
			PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
						kPGPPrefMailSignDefault, b));
		
			if (IsDlgButtonChecked (hDlg, IDC_AUTODECRYPT) == BST_CHECKED) 
				b = TRUE;
			else 
				b = FALSE;
			PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
						kPGPPrefAutoDecrypt, b));
			
			if (IsDlgButtonChecked (
						hDlg, IDC_USESECUREVIEWER) == BST_CHECKED) 
				b = TRUE;
			else 
				b = FALSE;
			PGPclErrorBox (hDlg, PGPSetPrefBoolean (PrefRefClient,
						kPGPPrefAlwaysUseSecureViewer, b));
			
			returnErr = kPGPError_NoErr;
            SetWindowLong (hDlg, DWL_MSGRESULT, PSNRET_NOERROR);
            return TRUE;

		case PSN_KILLACTIVE :
			if (IsDlgButtonChecked (hDlg, IDC_WRAPENABLE) == BST_CHECKED)
			{
				u = GetDlgItemInt (hDlg, IDC_WRAPNUMBER, NULL, FALSE);
				if (u == 0) 
				{
					PGPclMessageBox (hDlg, IDS_CAPTION, 
							IDS_INVALIDWRAP, MB_OK|MB_ICONHAND);
					SendDlgItemMessage (hDlg, IDC_WRAPNUMBER, EM_SETSEL, 0, -1);
					SetFocus (GetDlgItem (hDlg, IDC_WRAPNUMBER));
					SetWindowLong (hDlg, DWL_MSGRESULT, TRUE);
					return TRUE;
				}
			}
            SetWindowLong (hDlg, DWL_MSGRESULT, FALSE);
            return TRUE;

		case PSN_RESET :
			returnErr = kPGPError_UserAbort;
            SetWindowLong (hDlg, DWL_MSGRESULT, FALSE);
			break;
		}
	}

	return FALSE;

}

//	_____________________________________________________
//
//  Message processing function for property sheet dialog

static VOID 
sSetHotKeyControl (
		HWND		hwnd, 
		PGPUInt32	u)
{
	UINT	uKey	= LOWORD (u);
	UINT	uMod	= 0;

	if (u & kPGPHotKeyAltModifier)
		uMod |= HOTKEYF_ALT;

	if (u & kPGPHotKeyCtrlModifier)
		uMod |= HOTKEYF_CONTROL;

	if (u & kPGPHotKeyExtModifier)
		uMod |= HOTKEYF_EXT;

	if (u & kPGPHotKeyShiftModifier)
		uMod |= HOTKEYF_SHIFT;

	SendMessage (hwnd, HKM_SETHOTKEY, MAKEWORD (LOBYTE (uKey), uMod), 0);

	if (u & kPGPHotKeyEnabled)
		EnableWindow (hwnd, TRUE);
	else
		EnableWindow (hwnd, FALSE);
}


//	_____________________________________________________
//
//  Message processing function for property sheet dialog

static PGPUInt32 
sGetHotKeyControl (
		HWND		hwnd)
{
	UINT	uKey;
	WORD	wMod;

	uKey = SendMessage (hwnd, HKM_GETHOTKEY, 0, 0);

	wMod = HIBYTE (LOWORD (uKey));
	uKey &= 0xFF;

	if (wMod & HOTKEYF_ALT)
		uKey |= kPGPHotKeyAltModifier;

	if (wMod & HOTKEYF_CONTROL)
		uKey |= kPGPHotKeyCtrlModifier;

	if (wMod & HOTKEYF_EXT)
		uKey |= kPGPHotKeyExtModifier;

	if (wMod & HOTKEYF_SHIFT)
		uKey |= kPGPHotKeyShiftModifier;

	return uKey;
}


//	_____________________________________________________
//
//  Message processing function for property sheet dialog

static BOOL 
sDoHotKeysOverlap (
		PGPHotKeys* photkeys)
{
	PGPUInt32* pStart	= &(photkeys->hotkeyPurgePassphraseCache);
	PGPUInt32* pEnd		= &(photkeys->hotkeyDiskUnmount);
	PGPUInt32* p;

	do 
	{
		p = pStart+1;
		while (p <= pEnd) 
		{
			if ((*p & kPGPHotKeyEnabled) &&
				(*p == *pStart))
				return TRUE;
			p++;
		}
		pStart++;
	}
	while (pStart < pEnd);

	return FALSE;
}


//	_____________________________________________________
//
//  determine if hotkey is already in use -- this works because
//	we have already disabled all PGP hotkeys (except PGPdisk)

static BOOL 
sIsHotKeyInUse (
		PGPUInt32 uHotKey)
{
	UINT	uMod		= 0;
	BOOL	bInUse		= TRUE;

	if (uHotKey & kPGPHotKeyAltModifier)
		uMod |= MOD_ALT;
	if (uHotKey & kPGPHotKeyCtrlModifier)
		uMod |= MOD_CONTROL;
	if (uHotKey & kPGPHotKeyShiftModifier)
		uMod |= MOD_SHIFT;

	if (RegisterHotKey (NULL, 0xC000, uMod, (uHotKey & 0xFF)))
	{
		UnregisterHotKey (NULL, 0xC000);
		bInUse = FALSE;
	}

	return bInUse;
}


//	_____________________________________________________
//
//  Message processing function for property sheet dialog

static LRESULT WINAPI 
sHotkeyPropDlgProc (
		HWND	hDlg, 
		UINT	uMsg, 
		WPARAM	wParam, 
		LPARAM	lParam) 
{
	switch (uMsg) {

	case WM_INITDIALOG:
	{
		PGPHotKeys*		phks		= NULL;
		PGPSize			size;
		PGPHotKeys		hotkeys;
		PGPError		err;

		if (bNeedsCentering) 
		{
			HWND	hParent;
			RECT	rc;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -