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

📄 pnaddwiz.c

📁 vc环境下的pgp源码
💻 C
📖 第 1 页 / 共 5 页
字号:
					ShowWindow (GetDlgItem (hwnd, IDC_WORKING), SW_SHOW);

					SetTimer (hwnd, TIMER_ID, TIMER_MS, NULL);
				}

				SetWindowLong (hwnd, DWL_MSGRESULT, 0L);
			}
			else
				SetWindowLong (hwnd, DWL_MSGRESULT, -1L);

			bReturnCode = TRUE;
			break;

		case PSN_WIZNEXT :
		{
			DWORD dw;

			pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);

			// get IP address
			SendMessage (pahs->hwndHostIPAddressLookup, 
									PGP_IPM_GETADDRESS, 0, (LPARAM)&dw);
			pahs->pheNew->ipAddress = dw;

			if (PNIsHostAlreadyInList (hwnd, pahs->uHostType, dw, 0xFFFFFFFF, 
					pahs->ppnconfig->pHostList,
					pahs->ppnconfig->uHostCount, -1))
				SetWindowLong (hwnd, DWL_MSGRESULT, -1L);
			else
				SetWindowLong (hwnd, DWL_MSGRESULT, 0L);

			bReturnCode = TRUE;
			break;
		}

		case PSN_QUERYCANCEL :
			pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
			// if querying DNS, just cancel the query
			if (pahs->hwndThreadParent)
			{
				pahs->hwndThreadParent = NULL;
				SendMessage (hwnd, WM_APP, FALSE, 0);
				SetWindowLong (hwnd, DWL_MSGRESULT, -1L);
			}
			// otherwise cancel the entire wizard
			else
				SetWindowLong (hwnd, DWL_MSGRESULT, 0L);

			bReturnCode = TRUE;
			break;
		}
		
		break;
	}
	}

	return bReturnCode;
}


//	______________________________________________
//
//	Dialog procedure for asking user if we are to use public-key or
//	shared-secret security

static LRESULT WINAPI 
sAddWizUseSharedSecretDlgProc (
		HWND	hwnd, 
		UINT	uMsg, 
		WPARAM	wParam,
		LPARAM	lParam) 
{
	BOOL			bReturnCode = FALSE;
	PADDHOSTSTRUCT	pahs		= NULL;

	switch (uMsg) {
	case WM_INITDIALOG:
	{
		PROPSHEETPAGE *ppspMsgRec = (PROPSHEETPAGE *) lParam;
		pahs = (PADDHOSTSTRUCT) ppspMsgRec->lParam;
		SetWindowLong (hwnd, GWL_USERDATA, (LPARAM)pahs);

		// set default state
		CheckRadioButton (hwnd, 
				IDC_PUBLICKEY, IDC_SHAREDSECRET, IDC_PUBLICKEY);
		break;
	}

	case WM_ACTIVATE :
		InvalidateRect (hwnd, NULL, TRUE);
		break;

	case WM_PAINT :
		pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
		if (pahs->hPalette)
		{
			PAINTSTRUCT ps;
			HDC	hDC = BeginPaint (hwnd, &ps);
			SelectPalette (hDC, pahs->hPalette, FALSE);
			RealizePalette (hDC);
			EndPaint (hwnd, &ps);
		}
		break;

	case PSM_QUERYSIBLINGS :
		// set default state
		CheckRadioButton (hwnd, 
				IDC_PUBLICKEY, IDC_SHAREDSECRET, IDC_PUBLICKEY);
		return 0;
	
	case WM_NOTIFY:
	{
		LPNMHDR pnmh = (LPNMHDR) lParam;

		switch(pnmh->code) {
		case PSN_SETACTIVE:
			pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
			if (pahs->bSecure == FALSE) 
			{
				pahs->bSharedSecret = FALSE;
				SetWindowLong (hwnd, DWL_MSGRESULT, -1L);
			}
			else
			{
				PostMessage	(GetParent (hwnd), 
						PSM_SETWIZBUTTONS, 0, PSWIZB_BACK|PSWIZB_NEXT);
				SendDlgItemMessage (hwnd, IDC_WIZBITMAP, STM_SETIMAGE, 
						IMAGE_BITMAP, (LPARAM) pahs->hBitmap);
				SetWindowLong (hwnd, DWL_MSGRESULT, 0L);
			}
			bReturnCode = TRUE;
			break;

		case PSN_KILLACTIVE:
			pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
			if (IsDlgButtonChecked (hwnd, IDC_SHAREDSECRET) == BST_CHECKED)
				pahs->bSharedSecret = TRUE;
			else
				pahs->bSharedSecret = FALSE;
			SetWindowLong (hwnd, DWL_MSGRESULT, 0L);
			bReturnCode = TRUE;
			break;

		case PSN_QUERYCANCEL:
			break;
		}
		
		break;
	}
	}

	return bReturnCode;
}


//	______________________________________________
//
//	Dialog procedure for asking user for shared secret

static LRESULT WINAPI 
sAddWizSharedSecretDlgProc (
		HWND	hwnd, 
		UINT	uMsg, 
		WPARAM	wParam,
		LPARAM	lParam) 
{
	BOOL			bReturnCode = FALSE;
	PADDHOSTSTRUCT	pahs		= NULL;

	switch (uMsg) {
	case WM_INITDIALOG:
	{
		PROPSHEETPAGE *ppspMsgRec = (PROPSHEETPAGE *) lParam;
		pahs = (PADDHOSTSTRUCT) ppspMsgRec->lParam;
		SetWindowLong (hwnd, GWL_USERDATA, (LPARAM)pahs);

		CheckDlgButton (hwnd, IDC_HIDETYPING, BST_CHECKED);
		pahs->hbrushEdit = CreateSolidBrush (GetSysColor (COLOR_WINDOW));

		pahs->wpOrigSharedSecret1Proc = 
			(WNDPROC) SetWindowLong (GetDlgItem (hwnd, IDC_SHAREDSECRET1), 
						GWL_WNDPROC, (LONG) sWizSharedSecret1SubclassProc); 
		pahs->wpOrigSharedSecret2Proc = 
			(WNDPROC) SetWindowLong (GetDlgItem (hwnd, IDC_SHAREDSECRET2), 
						GWL_WNDPROC, (LONG) sWizSharedSecret2SubclassProc); 

		break;
	}

	case WM_DESTROY: 
		pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
		DeleteObject (pahs->hbrushEdit);
		SetWindowLong (GetDlgItem (hwnd, IDC_SHAREDSECRET1),
						GWL_WNDPROC, (LONG)pahs->wpOrigSharedSecret1Proc); 
		SetWindowLong (GetDlgItem (hwnd, IDC_SHAREDSECRET2),
						GWL_WNDPROC, (LONG)pahs->wpOrigSharedSecret2Proc);
		break;

	case WM_CTLCOLOREDIT:
		if (((HWND)lParam == GetDlgItem (hwnd, IDC_SHAREDSECRET1)) ||
			((HWND)lParam == GetDlgItem (hwnd, IDC_SHAREDSECRET2))) 
		{
			pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);

			SetBkColor ((HDC)wParam, GetSysColor (COLOR_WINDOW));
			if (pahs->bHideTyping) 
				SetTextColor ((HDC)wParam, GetSysColor (COLOR_WINDOW));
			else 
				SetTextColor ((HDC)wParam, GetSysColor (COLOR_WINDOWTEXT));
			return (BOOL)(pahs->hbrushEdit);
		}
		break;

	case WM_ACTIVATE :
		InvalidateRect (hwnd, NULL, TRUE);
		break;

	case WM_PAINT :
		pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
		if (pahs->hPalette)
		{
			PAINTSTRUCT ps;
			HDC	hDC = BeginPaint (hwnd, &ps);
			SelectPalette (hDC, pahs->hPalette, FALSE);
			RealizePalette (hDC);
			EndPaint (hwnd, &ps);
		}
		break;

	case PSM_QUERYSIBLINGS :
		// set default state
		SetDlgItemText (hwnd, IDC_SHAREDSECRET1, "");
		SetDlgItemText (hwnd, IDC_SHAREDSECRET2, "");
		return 0;
	
	case WM_COMMAND:
		switch (LOWORD(wParam)) {
		case IDC_HIDETYPING:
			pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
			if (IsDlgButtonChecked (hwnd, IDC_HIDETYPING) == BST_CHECKED) 
				pahs->bHideTyping = TRUE;
			else 
				pahs->bHideTyping = FALSE;
			InvalidateRect (GetDlgItem (hwnd, IDC_SHAREDSECRET1), NULL, TRUE);
			InvalidateRect (GetDlgItem (hwnd, IDC_SHAREDSECRET2), NULL, TRUE);
			break;

		case IDC_SHAREDSECRET1 :
			if (GetWindowTextLength (
						GetDlgItem (hwnd, IDC_SHAREDSECRET1)) > 0)
				PropSheet_SetWizButtons (
						GetParent (hwnd), PSWIZB_NEXT|PSWIZB_BACK);
			else
				PropSheet_SetWizButtons (
						GetParent (hwnd), PSWIZB_BACK);
			break;
		}
		break;

	case WM_NOTIFY:
	{
		LPNMHDR pnmh = (LPNMHDR) lParam;

		switch(pnmh->code) {
		case PSN_SETACTIVE:
			pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
			if (pahs->bSharedSecret == FALSE) 
			{
 				SetWindowLong (hwnd, DWL_MSGRESULT, -1L);
			}
			else
			{
				// enable/disable the 'Next' button
				SetDlgItemText (hwnd, IDC_SHAREDSECRET1, "");
				SetDlgItemText (hwnd, IDC_SHAREDSECRET2, "");

				SendDlgItemMessage (hwnd, 
					IDC_SECRETQUALITY, PBM_SETPOS, 0, 0);

				PostMessage	(GetParent (hwnd), 
						PSM_SETWIZBUTTONS, 0, PSWIZB_BACK);
				SendDlgItemMessage (hwnd, IDC_WIZBITMAP, STM_SETIMAGE, 
						IMAGE_BITMAP, (LPARAM) pahs->hBitmap);
				SetWindowLong (hwnd, DWL_MSGRESULT, 0L);
			}
			bReturnCode = TRUE;
			break;

		case PSN_WIZNEXT:
		{
			CHAR	szConfirm[kMaxNetHostSharedSecretLength +1];

			pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);

			GetDlgItemText (hwnd, IDC_SHAREDSECRET1, 
				pahs->pheNew->sharedSecret, kMaxNetHostSharedSecretLength+1);
			GetDlgItemText (hwnd, IDC_SHAREDSECRET2, 
				szConfirm, kMaxNetHostSharedSecretLength+1);

			if (lstrcmp (pahs->pheNew->sharedSecret, szConfirm))
			{
				pgpClearMemory (pahs->pheNew->sharedSecret, 
									kMaxNetHostSharedSecretLength);

				SetDlgItemText (hwnd, IDC_SHAREDSECRET1, "");
				SetDlgItemText (hwnd, IDC_SHAREDSECRET2, "");

				SendDlgItemMessage (hwnd, 
						IDC_SECRETQUALITY, PBM_SETPOS, 0, 0);
				PostMessage	(GetParent (hwnd), 
						PSM_SETWIZBUTTONS, 0, PSWIZB_BACK);

				PNMessageBox (hwnd, IDS_CAPTION, 
					IDS_SECRETCONFIRMMISMATCH, MB_ICONEXCLAMATION|MB_OK);

				SetWindowLong (hwnd, DWL_MSGRESULT, 1L);
			}
			else
				SetWindowLong (hwnd, DWL_MSGRESULT, 0L);
			bReturnCode = TRUE;
			break;
		}

		case PSN_QUERYCANCEL:
			break;
		}
		
		break;
	}
	}

	return bReturnCode;
}


//	______________________________________________
//
//	Dialog procedure for asking user identity type

static LRESULT WINAPI 
sAddWizIdentityTypeDlgProc (
		HWND	hwnd, 
		UINT	uMsg, 
		WPARAM	wParam,
		LPARAM	lParam) 
{
	BOOL			bReturnCode = FALSE;
	PADDHOSTSTRUCT	pahs		= NULL;

	switch (uMsg) {
	case WM_INITDIALOG:
	{
		PROPSHEETPAGE *ppspMsgRec = (PROPSHEETPAGE *) lParam;
		CHAR	sz1[128];
		CHAR	sz2[128];
		CHAR	sz[256];

		pahs = (PADDHOSTSTRUCT) ppspMsgRec->lParam;
		SetWindowLong (hwnd, GWL_USERDATA, (LPARAM)pahs);

		// set IP address 
		PNGetLocalHostInfo (&pahs->dwIdIPAddress, sz1, sizeof(sz1));
		GetDlgItemText (hwnd, IDC_IPADDRESSTEXT, sz2, sizeof(sz2));
		wsprintf (sz, sz2, sz1);
		SetDlgItemText (hwnd, IDC_IPADDRESSTEXT, sz);

		// set host name
		PNGetLocalHostInfo (NULL, sz1, sizeof(sz1));
		GetDlgItemText (hwnd, IDC_HOSTNAMETEXT, sz2, sizeof(sz2));
		wsprintf (sz, sz2, sz1);
		SetDlgItemText (hwnd, IDC_HOSTNAMETEXT, sz);

		// set user domain name
		PNGetLocalHostInfo (NULL, sz1, sizeof(sz1));
		GetDlgItemText (hwnd, IDC_USERDOMAINNAMETEXT, sz2, sizeof(sz2));
		wsprintf (sz, sz2, sz1);
		SetDlgItemText (hwnd, IDC_USERDOMAINNAMETEXT, sz);

		// set default state
		CheckRadioButton (hwnd, 
				IDC_IPADDRESS, IDC_DISTINGUISHEDNAME, IDC_IPADDRESS);
		break;
	}

	case WM_ACTIVATE :
		InvalidateRect (hwnd, NULL, TRUE);
		break;

	case WM_PAINT :
		pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
		if (pahs->hPalette)
		{
			PAINTSTRUCT ps;
			HDC	hDC = BeginPaint (hwnd, &ps);
			SelectPalette (hDC, pahs->hPalette, FALSE);
			RealizePalette (hDC);
			EndPaint (hwnd, &ps);
		}
		break;

	case PSM_QUERYSIBLINGS :
		// set default state
		CheckRadioButton (hwnd, 
				IDC_IPADDRESS, IDC_DISTINGUISHEDNAME, IDC_IPADDRESS);
		return 0;
	
	case WM_NOTIFY:
	{
		LPNMHDR pnmh = (LPNMHDR) lParam;

		switch(pnmh->code) {
		case PSN_SETACTIVE:
		{
			pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
			if (pahs->bSharedSecret == FALSE) 
			{
 				SetWindowLong (hwnd, DWL_MSGRESULT, -1L);
			}
			else
			{
				PostMessage	(GetParent (hwnd), 
						PSM_SETWIZBUTTONS, 0, PSWIZB_BACK|PSWIZB_NEXT);
				SendDlgItemMessage (hwnd, IDC_WIZBITMAP, STM_SETIMAGE, 
						IMAGE_BITMAP, (LPARAM) pahs->hBitmap);

				SetWindowLong (hwnd, DWL_MSGRESULT, 0L);
			}

			bReturnCode = TRUE;
			break;
		}

		case PSN_KILLACTIVE:
			pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
			if (IsDlgButtonChecked (
							hwnd, IDC_IPADDRESS) == BST_CHECKED)
			{
				pahs->pheNew->identityType = kPGPike_ID_IPV4_Addr;
			}
			else if (IsDlgButtonChecked (
							hwnd, IDC_HOSTNAME) == BST_CHECKED)
			{
				pahs->pheNew->identityType = kPGPike_ID_FQDN;
				PNGetLocalHostInfo (NULL,
					pahs->pheNew->identity, sizeof(pahs->pheNew->identity));
			}
			else if (IsDlgButtonChecked (
							hwnd, IDC_USERDOMAINNAME) == BST_CHECKED)
			{
				pahs->pheNew->identityType = kPGPike_ID_UserFDQN;
			}
			else
			{
				pahs->pheNew->identityType = kPGPike_ID_DER_ASN1_DN;
			}

			SetWindowLong (hwnd, DWL_MSGRESULT, 0L);
			bReturnCode = TRUE;
			break;

		case PSN_QUERYCANCEL:
			break;
		}
		
		break;
	}
	}

	return bReturnCode;
}


//	______________________________________________
//
//	Dialog procedure for asking user the identity string

static LRESULT WINAPI 
sAddWizIdentityDlgProc (
		HWND	hwnd, 
		UINT	uMsg, 
		WPARAM	wParam,
		LPARAM	lParam) 
{
	BOOL			bReturnCode = FALSE;
	PADDHOSTSTRUCT	pahs		= NULL;

	switch (uMsg) {
	case WM_INITDIALOG:
	{
		PROPSHEETPAGE *ppspMsgRec = (PROPSHEETPAGE *) lParam;
		pahs = (PADDHOSTSTRUCT) ppspMsgRec->lParam;
		SetWindowLong (hwnd, GWL_USERDATA, (LPARAM)pahs);

		SendDlgItemMessage (hwnd, IDC_IDENTITY, 
				EM_LIMITTEXT, kMaxNetHostIdentityLength, 0);
		break;
	}

	case WM_ACTIVATE :
		InvalidateRect (hwnd, NULL, TRUE);
		break;

	case WM_PAINT :
		pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
		if (pahs->hPalette)
		{
			PAINTSTRUCT ps;
			HDC	hDC = BeginPaint (hwnd, &ps);
			SelectPalette (hDC, pahs->hPalette, FALSE);
			RealizePalette (hDC);
			EndPaint (hwnd, &ps);
		}
		break;

	case PSM_QUERYSIBLINGS :
		// set default state
		SetDlgItemText (hwnd, IDC_IDENTITY, "");
		return 0;
	
	case WM_COMMAND :
		if (LOWORD (wParam) == IDC_IDENTITY)
		{
			// enable/disable the 'Next' button
			if (GetWindowTextLength (GetDlgItem (hwnd, IDC_IDENTITY)) > 0)
				PropSheet_SetWizButtons (

⌨️ 快捷键说明

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