📄 pnmsgprc.c
字号:
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 + -