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