📄 pnaddwiz.c
字号:
return bReturnCode;
}
// ______________________________________________
//
// Dialog procedure for asking user if host is behind gateway
static LRESULT WINAPI
sAddWizBehindGatewayDlgProc (
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
BOOL bReturnCode = FALSE;
PADDHOSTSTRUCT pahs = NULL;
switch (uMsg) {
case WM_INITDIALOG:
{
CHAR sz[kMaxNetHostNameLength +128];
CHAR szFormat[kMaxNetHostNameLength +1];
PROPSHEETPAGE* ppspMsgRec = (PROPSHEETPAGE *) lParam;
pahs = (PADDHOSTSTRUCT) ppspMsgRec->lParam;
SetWindowLong (hwnd, GWL_USERDATA, (LPARAM)pahs);
if (pahs->iSelectedHost >= 0)
{
// set text strings
GetDlgItemText (hwnd, IDC_TEXT1, szFormat, sizeof(szFormat));
wsprintf (sz, szFormat,
pahs->ppnconfig->pHostList[pahs->iSelectedHost].hostName);
SetDlgItemText (hwnd, IDC_TEXT1, sz);
GetDlgItemText (hwnd, IDC_TEXT2, szFormat, sizeof(szFormat));
wsprintf (sz, szFormat,
pahs->ppnconfig->pHostList[pahs->iSelectedHost].hostName);
SetDlgItemText (hwnd, IDC_TEXT2, sz);
GetDlgItemText (hwnd, IDC_TEXT3, szFormat, sizeof(szFormat));
wsprintf (sz, szFormat,
pahs->ppnconfig->pHostList[pahs->iSelectedHost].hostName);
SetDlgItemText (hwnd, IDC_TEXT3, sz);
}
// set default state
CheckRadioButton (hwnd,
IDC_BEHINDGATEWAY, IDC_NOTBEHINDGATEWAY, IDC_BEHINDGATEWAY);
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 WM_NOTIFY:
{
LPNMHDR pnmh = (LPNMHDR) lParam;
switch(pnmh->code) {
case PSN_SETACTIVE:
{
PGPUInt32 uHostType;
pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
if (pahs->iSelectedHost < 0)
{
SetWindowLong (hwnd, DWL_MSGRESULT, -1L);
}
else
{
uHostType =
pahs->ppnconfig->pHostList[pahs->iSelectedHost].hostType;
if (uHostType != kPGPnetSecureGateway)
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_BEHINDGATEWAY) == BST_CHECKED)
pahs->bBehindGateway = TRUE;
else
pahs->bBehindGateway = FALSE;
SetWindowLong (hwnd, DWL_MSGRESULT, 0L);
bReturnCode = TRUE;
break;
case PSN_QUERYCANCEL:
break;
}
break;
}
}
return bReturnCode;
}
// ______________________________________________
//
// Dialog procedure for asking user host type
static LRESULT WINAPI
sAddWizHostTypeDlgProc (
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_HOST, IDC_GATEWAY, IDC_HOST);
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_HOST, IDC_GATEWAY, IDC_HOST);
return 0;
case WM_NOTIFY:
{
LPNMHDR pnmh = (LPNMHDR) lParam;
switch(pnmh->code) {
case PSN_SETACTIVE:
{
pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
#if !PGP_FREEWARE
if (pahs->bBehindGateway)
{
ShowWindow (GetDlgItem (hwnd, IDC_GATEWAY), SW_HIDE);
ShowWindow (GetDlgItem (hwnd, IDC_GATEWAYTEXT), SW_HIDE);
EnableWindow (GetDlgItem (hwnd, IDC_GATEWAY), FALSE);
}
else
{
ShowWindow (GetDlgItem (hwnd, IDC_GATEWAY), SW_SHOW);
ShowWindow (GetDlgItem (hwnd, IDC_GATEWAYTEXT), SW_SHOW);
EnableWindow (GetDlgItem (hwnd, IDC_GATEWAY), TRUE);
}
#endif //PGP_FREEWARE
if (pahs->bFirstTime)
PostMessage (GetParent (hwnd),
PSM_SETWIZBUTTONS, 0, PSWIZB_BACK|PSWIZB_NEXT);
else
PostMessage (GetParent (hwnd),
PSM_SETWIZBUTTONS, 0, 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_HOST) == BST_CHECKED)
pahs->uHostType = WIZ_HOST;
else if (IsDlgButtonChecked (hwnd, IDC_SUBNET) == BST_CHECKED)
pahs->uHostType = WIZ_SUBNET;
else
pahs->uHostType = WIZ_GATEWAY;
SetWindowLong (hwnd, DWL_MSGRESULT, 0L);
bReturnCode = TRUE;
break;
case PSN_QUERYCANCEL:
break;
}
break;
}
}
return bReturnCode;
}
// ______________________________________________
//
// Dialog procedure for asking user if secure or insecure communications
static LRESULT WINAPI
sAddWizSecureDlgProc (
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_SECURE, IDC_INSECURE, IDC_SECURE);
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_SECURE, IDC_INSECURE, IDC_SECURE);
return 0;
case WM_NOTIFY:
{
LPNMHDR pnmh = (LPNMHDR) lParam;
switch(pnmh->code) {
case PSN_SETACTIVE:
pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
if (pahs->uHostType == WIZ_GATEWAY)
{
pahs->bSecure = TRUE;
SetWindowLong (hwnd, DWL_MSGRESULT, -1L);
}
#if !PGPNET_SECURE_HOSTS_BEHIND_GATEWAYS
else if (pahs->bBehindGateway)
{
pahs->bSecure = FALSE;
SetWindowLong (hwnd, DWL_MSGRESULT, -1L);
}
#endif
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_SECURE) == BST_CHECKED)
pahs->bSecure = TRUE;
else
pahs->bSecure = FALSE;
SetWindowLong (hwnd, DWL_MSGRESULT, 0L);
bReturnCode = TRUE;
break;
case PSN_QUERYCANCEL:
break;
}
break;
}
}
return bReturnCode;
}
// ______________________________________________
//
// Dialog procedure for asking user the domain name of host
static LRESULT WINAPI
sAddWizHostNameDlgProc (
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);
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_HOSTNAME, "");
return 0;
case WM_COMMAND :
if (LOWORD (wParam) == IDC_HOSTNAME)
{
// enable/disable the 'Next' button
if (GetWindowTextLength (GetDlgItem (hwnd, IDC_HOSTNAME)) > 0)
PropSheet_SetWizButtons (
GetParent (hwnd), PSWIZB_NEXT|PSWIZB_BACK);
else
PropSheet_SetWizButtons (
GetParent (hwnd), PSWIZB_BACK);
}
break;
case WM_NOTIFY:
{
LPNMHDR pnmh = (LPNMHDR) lParam;
switch(pnmh->code) {
case PSN_SETACTIVE:
pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
PostMessage (GetParent (hwnd),
PSM_SETWIZBUTTONS, 0, PSWIZB_BACK|PSWIZB_NEXT);
SendDlgItemMessage (hwnd, IDC_WIZBITMAP, STM_SETIMAGE,
IMAGE_BITMAP, (LPARAM) pahs->hBitmap);
// enable/disable the 'Next' button
if (GetWindowTextLength (GetDlgItem (hwnd, IDC_HOSTNAME)) > 0)
PropSheet_SetWizButtons (
GetParent (hwnd), PSWIZB_NEXT|PSWIZB_BACK);
else
PropSheet_SetWizButtons (
GetParent (hwnd), PSWIZB_BACK);
// set the window text
switch (pahs->uHostType) {
case WIZ_HOST :
ShowWindow (GetDlgItem (hwnd, IDC_TEXTHOST), SW_SHOW);
ShowWindow (GetDlgItem (hwnd, IDC_TEXTSUBNET), SW_HIDE);
ShowWindow (GetDlgItem (hwnd, IDC_TEXTGATEWAY), SW_HIDE);
break;
case WIZ_SUBNET :
ShowWindow (GetDlgItem (hwnd, IDC_TEXTHOST), SW_HIDE);
ShowWindow (GetDlgItem (hwnd, IDC_TEXTSUBNET), SW_SHOW);
ShowWindow (GetDlgItem (hwnd, IDC_TEXTGATEWAY), SW_HIDE);
break;
case WIZ_GATEWAY :
ShowWindow (GetDlgItem (hwnd, IDC_TEXTHOST), SW_HIDE);
ShowWindow (GetDlgItem (hwnd, IDC_TEXTSUBNET), SW_HIDE);
ShowWindow (GetDlgItem (hwnd, IDC_TEXTGATEWAY), SW_SHOW);
break;
}
SetWindowLong (hwnd, DWL_MSGRESULT, 0L);
bReturnCode = TRUE;
break;
case PSN_KILLACTIVE:
pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
SetFocus (NULL);
GetDlgItemText (hwnd, IDC_HOSTNAME, pahs->pheNew->hostName,
sizeof(pahs->pheNew->hostName));
SetWindowLong (hwnd, DWL_MSGRESULT, 0L);
bReturnCode = TRUE;
break;
case PSN_QUERYCANCEL:
break;
}
break;
}
}
return bReturnCode;
}
// ______________________________________________
//
// Dialog procedure for asking user the IP address of subnet
static LRESULT WINAPI
sAddWizSubnetAddressDlgProc (
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
BOOL bReturnCode = FALSE;
PADDHOSTSTRUCT pahs = NULL;
switch (uMsg) {
case WM_INITDIALOG:
{
PROPSHEETPAGE* ppspMsgRec = (PROPSHEETPAGE *) lParam;
RECT rc;
pahs = (PADDHOSTSTRUCT) ppspMsgRec->lParam;
SetWindowLong (hwnd, GWL_USERDATA, (LPARAM)pahs);
// create IP edit control for address
GetWindowRect (GetDlgItem (hwnd, IDC_IPADDRESS), &rc);
MapWindowPoints (NULL, hwnd, (LPPOINT)&rc, 2);
pahs->hwndIPAddress = CreateWindowEx (
WS_EX_CLIENTEDGE,
WC_PGPIPADDRESS, "",
WS_CHILD|WS_VISIBLE|WS_TABSTOP,
rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top,
hwnd, NULL, g_hinst, NULL);
// set tab-order of control
SetWindowPos (pahs->hwndIPAddress,
GetDlgItem (hwnd, IDC_IPADDRESS),
0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
// create IP edit control for mask
GetWindowRect (GetDlgItem (hwnd, IDC_SUBNETMASK), &rc);
MapWindowPoints (NULL, hwnd, (LPPOINT)&rc, 2);
pahs->hwndSubnetMask = CreateWindowEx (
WS_EX_CLIENTEDGE,
WC_PGPIPADDRESS, "",
WS_CHILD|WS_VISIBLE|WS_TABSTOP,
rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top,
hwnd, NULL, g_hinst, NULL);
// set tab-order of control
SetWindowPos (pahs->hwndSubnetMask,
GetDlgItem (hwnd, IDC_SUBNETMASK),
0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
break;
}
case WM_DESTROY :
pahs = (PADDHOSTSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
DestroyWindow (pahs->hwndIPAddress);
DestroyWindow (pahs->hwndSubnetMask);
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);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -