void NewCreds_OnInitDialog (HWND hDlg) { LPTSTR pszCell = (LPTSTR)GetWindowLongPtr (hDlg, DWLP_USER); if (!pszCell) pszCell = TEXT(""); if (GetDlgItem (hDlg, IDC_NEWCREDS_TITLE)) { TCHAR szText[ cchRESOURCE ]; GetDlgItemText (hDlg, IDC_NEWCREDS_TITLE, szText, cchRESOURCE); LPTSTR pszText = FormatString (szText, TEXT("%s"), pszCell); SetDlgItemText (hDlg, IDC_NEWCREDS_TITLE, pszText); FreeString (pszText); } if (pszCell && *pszCell) { SetDlgItemText (hDlg, IDC_NEWCREDS_CELL, pszCell); } else { TCHAR szCell[ cchRESOURCE ] = TEXT(""); (void)GetDefaultCell (szCell); SetDlgItemText (hDlg, IDC_NEWCREDS_CELL, szCell); } lock_ObtainMutex(&g.credsLock); size_t iCreds; for (iCreds = 0; iCreds < g.cCreds; ++iCreds) { if (*pszCell && !lstrcmpi (g.aCreds[ iCreds ].szCell, pszCell)) break; } if ((iCreds == g.cCreds) || (!g.aCreds[ iCreds ].szUser[0])) { PostMessage (hDlg, WM_NEXTDLGCTL, (WPARAM)GetDlgItem (hDlg, IDC_NEWCREDS_USER), TRUE); } else // (we have a valid username already) { SetDlgItemText (hDlg, IDC_NEWCREDS_USER, g.aCreds[ iCreds ].szUser); PostMessage (hDlg, WM_NEXTDLGCTL, (WPARAM)GetDlgItem (hDlg, IDC_NEWCREDS_PASSWORD), TRUE); } lock_ReleaseMutex(&g.credsLock); NewCreds_OnEnable (hDlg); SetForegroundWindow(hDlg); KillTimer (g.hMain, ID_SERVICE_TIMER); }
BOOL CALLBACK NewCreds_DlgProc (HWND hDlg, UINT msg, WPARAM wp, LPARAM lp) { switch (msg) { case WM_INITDIALOG: SetWindowLongPtr (hDlg, DWLP_USER, lp); NewCreds_OnInitDialog (hDlg); break; case WM_DESTROY: InterlockedDecrement (&g.fShowingMessage); break; case WM_COMMAND: switch (LOWORD(wp)) { case IDOK: if (NewCreds_OnOK (hDlg)) EndDialog (hDlg, IDOK); break; case IDCANCEL: NewCreds_OnCancel (hDlg); EndDialog (hDlg, IDCANCEL); break; case IDC_NEWCREDS_USER: case IDC_NEWCREDS_PASSWORD: NewCreds_OnEnable (hDlg); break; case IDHELP: NewCreds_DlgProc (hDlg, WM_HELP, 0, 0); break; } break; case WM_HELP: WinHelp (hDlg, g.szHelpFile, HELP_CONTEXT, IDH_AFSCREDS_NEWTOKENS); break; } return FALSE; }