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

📄 pnmsgprc.c

📁 vc环境下的pgp源码
💻 C
📖 第 1 页 / 共 2 页
字号:
	switch (uStatus) {
	case PGPNET_DRIVERENABLED :
	case PGPNET_DRIVERDISABLED :
		return uStatus;

	case PGPNET_SERVICENOTRESPONDING :
	case PGPNET_SERVICENOTAVAILABLE :
		LoadString (g_hinst, IDS_SERVICENOTRUNNING, sz2, sizeof(sz2));
		break;

	case PGPNET_DRIVERNOTAVAILABLE :
		LoadString (g_hinst, IDS_DRIVERNOTAVAIL, sz2, sizeof(sz2));
		break;

	default :
		return uStatus;
	}

	LoadString (g_hinst, IDS_CAPTION, sz1, sizeof(sz1));
	MessageBox (hwnd, sz2, sz1, MB_OK|MB_ICONEXCLAMATION);

	return uStatus;
}


//	____________________________________
//
//	load application options

VOID
PNLoadAppOptions (
		HWND	hwnd,
		BOOL	bInitialTime)
{
	PGPKeyRef			keyPGP		= kInvalidPGPKeyRef;
	PGPKeyRef			keyX509		= kInvalidPGPKeyRef;
	PGPSigRef			sigX509		= kInvalidPGPSigRef;

	// first time initialization
	if (bInitialTime) 
	{
		pgpClearMemory (&g_AOS, sizeof(g_AOS));
		g_AOS.keysetMain = kInvalidPGPKeySetRef;
	}

	// open keyring files
	PGPnetLoadSDKPrefs (g_context);
	PNLoadKeyRings (hwnd, &g_AOS.keysetMain);

	// load config from prefs file
	PGPnetLoadConfiguration (g_context, &g_AOS.pnconfig);

	// if no hosts in list, pop the "add host" dialog/wizard
	if (g_AOS.pnconfig.bFirstExecution)
	{
		if (bInitialTime && 
			(g_AOS.pnconfig.uHostCount == 0))
		{
			PNAddHostEntry (hwnd, &g_AOS.pnconfig, FALSE, -1, NULL);
		}
		g_AOS.pnconfig.bFirstExecution = FALSE;
		PNSaveConfiguration (hwnd, &g_AOS.pnconfig, FALSE);
	}

	// determine if authentication keys are specified
	PNSetAuthKeyFlags (
			g_context, &g_AOS.pnconfig, &g_AOS.bPGPKey, &g_AOS.bX509Key);

	if (g_AOS.pnconfig.uPGPAuthKeyAlg != kPGPPublicKeyAlgorithm_Invalid)
	{
		if (!g_AOS.bPGPKey)
		{
			PNMessageBox (hwnd, IDS_CAPTION, IDS_MISSINGPGPKEY, 
							MB_ICONSTOP|MB_OK);
		}
	}

	if (g_AOS.pnconfig.uX509AuthKeyAlg != kPGPPublicKeyAlgorithm_Invalid)
	{
		if (!g_AOS.bX509Key)
		{
			PNMessageBox (hwnd, IDS_CAPTION, IDS_MISSINGX509KEY, 
							MB_ICONSTOP|MB_OK);
		}
	}
}


//	____________________________________
//
//	window proc of main window

LRESULT CALLBACK 
PGPnetWndProc (
		HWND	hwnd, 
		UINT	uMsg, 
		WPARAM	wParam, 
		LPARAM	lParam)
{

	switch (uMsg)
	{
	case WM_CREATE:
		if (g_iCurrentPage == PGPNET_OPTIONSHEET)
		{
			if (!g_hwndOptions)
			{
				PNLoadAppOptions (hwnd, TRUE);
				PNOptionsPropSheet (hwnd, PGPNET_GENOPTIONS);
				PGPnetFreeConfiguration (&g_AOS.pnconfig);
			}
			else
				SetForegroundWindow (g_hwndOptions);
			return -1;
		}

		PostMessage (hwnd, WM_APP, PGPNET_STARTUP, 0);
		SetTimer (hwnd, SERVICETIMER_ID, SERVICETIMER_MS, NULL);
		return 0;

	case WM_APP :
		switch (wParam) 
		{
		case PGPNET_STARTUP :
			PNLoadAppOptions (hwnd, TRUE);

			sCreateControls (hwnd);
			sNewPage (hwnd, g_hwndTab);
			g_AOS.hwndStatusDlg = g_hwndStatusDlg;

			// delay to allow service time to disable GUI 
			SetTimer (hwnd, STARTUPTIMER_ID, STARTUPTIMER_MS, NULL);
			break;

		case PGPNET_SHOWWINDOW :
			g_bWindowShown = TRUE;

			ShowWindow (hwnd, SW_SHOW); 
			UpdateWindow (hwnd); 
			EnableWindow (hwnd, TRUE);

			PNSendServiceMessage (PGPNET_M_APPMESSAGE,
						(WPARAM)PGPNET_QUERYLOGONSTATUS, (LPARAM)hwnd);

			PNDisplayStatusBarText ();
			sDisplayStatusMessageBox (hwnd);

			if (lParam)
			{
				TabCtrl_SetCurSel (g_hwndTab, PGPNET_HOSTPAGE);
				sNewPage (hwnd, g_hwndTab);
			}

			if (!g_bAuthAccess)
				PNMessageBox (hwnd, IDS_CAPTION, IDS_NOAUTHPRIVS, 
									MB_OK|MB_ICONEXCLAMATION);
			break;

		case PGPNET_PAGESELECT :
			if (g_hwndOptions)
				return ((LRESULT)g_hwndOptions);
			else
			{
				if (lParam == PGPNET_OPTIONSHEET)
					SetTimer (hwnd, OPTIONSTIMER_ID, OPTIONSTIMER_MS, NULL);
				else
				{
					TabCtrl_SetCurSel (g_hwndTab, lParam);
					sNewPage (hwnd, g_hwndTab);
				}
				return ((LRESULT)hwnd);
			}
			break;
		}
		break;

	case PGPNET_M_APPMESSAGE :
		switch (wParam) {
		case PGPNET_CLEARLOGFILE :
			SendMessage (g_hwndLogDlg, uMsg, wParam, lParam);
			break;

		case PGPNET_DISABLEGUI :
			if (!g_bGUIDisabled)
			{
				HWND	hwndForeground;

				g_bGUIDisabled = TRUE;

				if (g_bWindowShown)
				{
					hwndForeground = GetForegroundWindow ();
					if (hwndForeground)
						g_hwndForeground = hwndForeground;

					g_hwndActive = GetLastActivePopup (hwnd);
					if (!g_hwndActive)
						g_hwndActive = hwnd;

					if (g_hwndForeground != g_hwndActive)
						g_hwndForeground = NULL;

					// disable our own window
					EnableWindow (g_hwndActive, FALSE);
				}

				// relenquish the foreground window to the PGPnet service
				SetForegroundWindow ((HWND)lParam);
			}
			break;

		case PGPNET_ENABLEGUI :
			if (g_bGUIDisabled)
			{
				g_bGUIDisabled = FALSE;

				if (!g_bWindowShown)
					PostMessage (hwnd, WM_APP, PGPNET_SHOWWINDOW, TRUE);
				else
				{
					EnableWindow (g_hwndActive, TRUE);

					if (g_hwndForeground)
					{
						SetForegroundWindow (g_hwndForeground);
						g_hwndForeground = NULL;
					}
				}
			}
			break;

		case PGPNET_PROMISCUOUSHOSTADDED :
			SendMessage (g_hwndHostDlg, uMsg, wParam, lParam);
			break;
		}
		break;

	case WM_TIMER :
		if (wParam == SERVICETIMER_ID)
		{
			UINT uStatus = PNDisplayStatusBarText ();
			if ((uStatus == PGPNET_SERVICENOTRESPONDING) ||
				(uStatus == PGPNET_SERVICENOTAVAILABLE))
			{
				if (g_bGUIDisabled)
					EnableWindow (g_hwndActive, TRUE);
			}
		}
		else if (wParam == STARTUPTIMER_ID)
		{
			KillTimer (hwnd, STARTUPTIMER_ID);

			if (!g_bGUIDisabled)
				PostMessage (hwnd, WM_APP, PGPNET_SHOWWINDOW, FALSE);
		}
		else if (wParam == OPTIONSTIMER_ID)
		{
			KillTimer (hwnd, OPTIONSTIMER_ID);
			PostMessage (hwnd, WM_COMMAND, IDM_OPTIONS, 0);
		}
		break;

	case WM_SIZING :
		{
			LPRECT prc = (LPRECT)lParam;
			switch (wParam) {
			case WMSZ_TOPLEFT :
			case WMSZ_LEFT :
			case WMSZ_BOTTOMLEFT :
				if ((prc->right - prc->left) < g_iMinWindowWidth)
					prc->left = prc->right - g_iMinWindowWidth;
				break;

			case WMSZ_TOPRIGHT :
			case WMSZ_RIGHT :
			case WMSZ_BOTTOMRIGHT :
				if ((prc->right - prc->left) < g_iMinWindowWidth)
					prc->right = prc->left + g_iMinWindowWidth;
				break;
			}
		}
		break;

	case WM_SETFOCUS :
		SetFocus (g_hwndTab);
		break;

	case WM_PAINT :
		sPaintDividerLine (hwnd);
		return 0;

	case WM_SIZE :
		sSizeControls (LOWORD(lParam), HIWORD(lParam));
		SendMessage (g_hwndStatusBar, WM_SIZE, wParam, lParam);
		return 0;

	case WM_NOTIFY :
		{
			LPNMHDR pnmhdr = (LPNMHDR)lParam;
			switch (pnmhdr->code) {
			case TCN_SELCHANGE :
				sNewPage (hwnd, g_hwndTab);
				break;

			case TCN_KEYDOWN :
			{
				TC_KEYDOWN*	ptckd = (TC_KEYDOWN*)lParam;
				if (ptckd->wVKey == VK_TAB)
					SendMessage (g_hwndCurrentDlg, PGPNET_M_SETFOCUS, 0, 0);
				break;
			}
			}
		}
		break;

	case WM_COPYDATA :
		return sRelayCopyDataMessage (wParam, lParam);

	case WM_HELP: 
		WinHelp (((LPHELPINFO) lParam)->hItemHandle, g_szHelpFile, 
			HELP_WM_HELP, (DWORD) (LPSTR) aMainIds); 
		return TRUE; 

	case WM_CONTEXTMENU: 
		WinHelp ((HWND) wParam, g_szHelpFile, HELP_CONTEXTMENU, 
			(DWORD) (LPVOID) aMainIds); 
		return TRUE; 

	case WM_COMMAND :
		switch (LOWORD (wParam)) {
		case IDM_OPTIONS :
			if (!g_hwndOptions)
			{
				PNOptionsPropSheet (hwnd, PGPNET_GENOPTIONS);
				SendMessage (g_hwndCurrentDlg, PGPNET_M_ACTIVATEPAGE, 0, 0);
			}
			break;

		case IDM_EXIT :
			PostMessage (hwnd, WM_CLOSE, 0, 0);
			break;

		case IDM_HELPABOUT :
			PGPclHelpAbout (g_context, hwnd, NULL, NULL, NULL);
			break;

		case IDM_STATUS :
			TabCtrl_SetCurSel (g_hwndTab, PGPNET_STATUSPAGE);
			sNewPage (hwnd, g_hwndTab);
			break;

		case IDM_LOG :
			TabCtrl_SetCurSel (g_hwndTab, PGPNET_LOGPAGE);
			sNewPage (hwnd, g_hwndTab);
			break;

		case IDM_HOSTS :
			TabCtrl_SetCurSel (g_hwndTab, PGPNET_HOSTPAGE);
			sNewPage (hwnd, g_hwndTab);
			break;

		case IDM_HELPCONTENTS :
			WinHelp (hwnd, g_szHelpFile, HELP_FINDER, 0);
			break;

		default :
			SendMessage (g_hwndCurrentDlg, uMsg, wParam, lParam);
			break;
		}
		return 0;

	case WM_CLOSE:
		WinHelp (hwnd, g_szHelpFile, HELP_QUIT, 0);
		sPutWindowPosToRegistry (hwnd);
		DestroyWindow (hwnd);
		return 0;

	case WM_DESTROY:
		KillTimer (hwnd, SERVICETIMER_ID);

		if (g_hwndLogDlg)
			DestroyWindow (g_hwndLogDlg);
		if (g_hwndStatusDlg)
			DestroyWindow (g_hwndStatusDlg);
		if (g_hwndTab)
			DestroyWindow (g_hwndTab);

		PGPnetFreeConfiguration (&g_AOS.pnconfig);
		if (PGPKeySetRefIsValid (g_AOS.keysetMain))
			PGPFreeKeySet (g_AOS.keysetMain);

		PostQuitMessage (0);
		return 0;

	default :
		if (uMsg == g_uReloadKeyringMsg)
		{
			PGPnetFreeConfiguration (&g_AOS.pnconfig);
			PNLoadAppOptions (hwnd, FALSE);

			g_AOS.bUpdateHostList = TRUE;
			SendMessage (g_hwndHostDlg, PGPNET_M_UPDATELIST, 0, 0);

			if (g_AOS.hwndAuthDlg != NULL)
			{
				PostMessage (
					g_AOS.hwndAuthDlg, PGPNET_M_RELOADKEYRINGS, 0, 0);
			}

			if (g_AOS.hwndHostDlg != NULL)
			{
				PostMessage (
					g_AOS.hwndHostDlg, PGPNET_M_RELOADKEYRINGS, 0, 0);
			}
			return 0;
		}
		break;
	}

	return DefWindowProc (hwnd, uMsg, wParam, lParam);
}


⌨️ 快捷键说明

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