/****************************************************************************\ * * chngdlg.h * * Created: William Taylor (wtaylor) 01/22/01 * * MS Ratings Change Password Dialog * \****************************************************************************/ #ifndef CHANGE_PASSWORD_DIALOG_H #define CHANGE_PASSWORD_DIALOG_H #include "basedlg.h" // CBaseDialog #include "hint.h" // CHint #include // Help Context ID's #include // SHWinHelpOnDemandWrap() and MLLoadStringA() static DWORD aIdsChangePassword[] = { IDC_STATIC5, IDH_IGNORE, IDC_STATIC1, IDH_RATINGS_CHANGE_PASSWORD_OLD, IDC_OLD_PASSWORD, IDH_RATINGS_CHANGE_PASSWORD_OLD, IDC_STATIC2, IDH_RATINGS_CHANGE_PASSWORD_NEW, IDC_PASSWORD, IDH_RATINGS_CHANGE_PASSWORD_NEW, IDC_STATIC4, IDH_RATINGS_SUPERVISOR_CREATE_PASSWORD, IDC_CREATE_PASSWORD, IDH_RATINGS_SUPERVISOR_CREATE_PASSWORD, IDC_STATIC3, IDH_RATINGS_CHANGE_PASSWORD_CONFIRM, IDC_CONFIRM_PASSWORD, IDH_RATINGS_CHANGE_PASSWORD_CONFIRM, IDC_OLD_HINT_LABEL, IDH_RATINGS_DISPLAY_PW_HINT, IDC_OLD_HINT_TEXT, IDH_RATINGS_DISPLAY_PW_HINT, IDC_HINT_TEXT, IDH_IGNORE, IDC_HINT_LABEL, IDH_RATINGS_ENTER_PW_HINT, IDC_HINT_EDIT, IDH_RATINGS_ENTER_PW_HINT, 0,0 }; template class CChangePasswordDialog: public CBaseDialog { public: enum { IDD = t_wDlgTemplateID }; public: CChangePasswordDialog() { /* Add Construction Here */ } public: typedef CChangePasswordDialog thisClass; typedef CBaseDialog baseClass; BEGIN_MSG_MAP(thisClass) MESSAGE_HANDLER(WM_INITDIALOG, OnInitDialog) COMMAND_ID_HANDLER(IDCANCEL, OnCancel) COMMAND_ID_HANDLER(IDOK, OnOK) MESSAGE_HANDLER(WM_HELP, OnHelp) MESSAGE_HANDLER(WM_CONTEXTMENU, OnContextMenu) CHAIN_MSG_MAP(baseClass) END_MSG_MAP() protected: LRESULT OnInitDialog(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { if(GetDlgItem(IDC_OLD_PASSWORD)!=NULL) { SendDlgItemMessage(IDC_OLD_PASSWORD,EM_SETLIMITTEXT,(WPARAM) RATINGS_MAX_PASSWORD_LENGTH,(LPARAM) 0); } if(GetDlgItem(IDC_PASSWORD)!=NULL) { SendDlgItemMessage(IDC_PASSWORD,EM_SETLIMITTEXT,(WPARAM) RATINGS_MAX_PASSWORD_LENGTH,(LPARAM) 0); } if(GetDlgItem(IDC_CONFIRM_PASSWORD)!=NULL) { SendDlgItemMessage(IDC_CONFIRM_PASSWORD,EM_SETLIMITTEXT,(WPARAM) RATINGS_MAX_PASSWORD_LENGTH,(LPARAM) 0); } if(GetDlgItem(IDC_CREATE_PASSWORD)!=NULL) { SendDlgItemMessage(IDC_CREATE_PASSWORD,EM_SETLIMITTEXT,(WPARAM) RATINGS_MAX_PASSWORD_LENGTH,(LPARAM) 0); } // Display previously created hint (if one exists). { CHint oldHint( m_hWnd, IDC_OLD_HINT_TEXT ); oldHint.DisplayHint(); } // Set the length of the new hint. { CHint newHint( m_hWnd, IDC_HINT_EDIT ); newHint.InitHint(); } bHandled = FALSE; return 1L; // Let the system set the focus } LRESULT OnCancel(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { EndDialog(FALSE); return 0L; } LRESULT OnOK(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) { CHAR pszPassword[MAXPATHLEN]; CHAR pszTempPassword[MAXPATHLEN]; CHAR *p = NULL; HRESULT hRet; HWND hwndPassword; int iPasswordCtrl; HWND hDlg = m_hWnd; iPasswordCtrl = IDC_PASSWORD; hwndPassword = ::GetDlgItem( hDlg, iPasswordCtrl ); if (hwndPassword == NULL) { iPasswordCtrl = IDC_CREATE_PASSWORD; hwndPassword = ::GetDlgItem( hDlg, iPasswordCtrl ); } ASSERT( hwndPassword ); ::GetWindowText(hwndPassword, pszPassword, sizeof(pszPassword)); GetDlgItemText(IDC_CONFIRM_PASSWORD, pszTempPassword, sizeof(pszTempPassword)); /* if they've typed just the first password but not the * second, let Enter take them to the second field */ if (*pszPassword && !*pszTempPassword && GetFocus() == hwndPassword) { SetErrorControl( IDC_CONFIRM_PASSWORD ); return 0L; } if (strcmpf(pszPassword, pszTempPassword)) { MyMessageBox(hDlg, IDS_NO_MATCH, IDS_GENERIC, MB_OK); SetErrorControl( IDC_CONFIRM_PASSWORD ); return 0L; } if (*pszPassword=='\0') { MyMessageBox(hDlg, IDS_NO_NULL_PASSWORD, IDS_GENERIC, MB_OK); SetErrorControl( iPasswordCtrl ); return 0L; } if ( SUCCEEDED( VerifySupervisorPassword() ) ) { GetDlgItemText(IDC_OLD_PASSWORD, pszTempPassword, sizeof(pszTempPassword)); p = pszTempPassword; } // Verify the Newly Added Hint. CHint newHint( hDlg, IDC_HINT_EDIT ); if ( ! newHint.VerifyHint() ) { TraceMsg( TF_ALWAYS, "CChangePasswordDialog::OnOK() - User requested to fill in hint." ); return 0L; } hRet = ChangeSupervisorPassword(p, pszPassword); if (SUCCEEDED(hRet)) { // Save the Newly Added Hint. newHint.SaveHint(); EndDialog(TRUE); } else { MyMessageBox(hDlg, IDS_BADPASSWORD, IDS_GENERIC, MB_OK|MB_ICONERROR); SetErrorControl( IDC_OLD_PASSWORD ); } return 0L; } LRESULT OnHelp(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { SHWinHelpOnDemandWrap((HWND)((LPHELPINFO)lParam)->hItemHandle, ::szHelpFile, HELP_WM_HELP, (DWORD_PTR)(LPSTR)aIdsChangePassword); return 0L; } LRESULT OnContextMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { SHWinHelpOnDemandWrap((HWND)wParam, ::szHelpFile, HELP_CONTEXTMENU, (DWORD_PTR)(LPVOID)aIdsChangePassword); return 0L; } }; #endif