BOOL CPasswordSubsetDlg::OnInitDialog() { CPWDialog::OnInitDialog(); Fonts::GetInstance()->ApplyPasswordFont(GetDlgItem(IDC_SUBSETRESULTS)); // Place dialog where user had it last CRect rect, dlgRect; GetWindowRect(&dlgRect); PWSprefs::GetInstance()->GetPrefPSSRect(rect.top, rect.bottom, rect.left, rect.right); HRGN hrgnWork = GetWorkAreaRegion(); // also check that window will be visible if ((rect.top == -1 && rect.bottom == -1 && rect.left == -1 && rect.right == -1) || !RectInRegion(hrgnWork, rect)){ rect = dlgRect; } ::DeleteObject(hrgnWork); // Ignore size just set position SetWindowPos(NULL, rect.left, rect.top, 0, 0, SWP_NOZORDER | SWP_NOSIZE); m_pToolTipCtrl = new CToolTipCtrl; if (!m_pToolTipCtrl->Create(this, TTS_BALLOON | TTS_NOPREFIX)) { pws_os::Trace(L"Unable To create CManagePSWDPols Dialog ToolTip\n"); delete m_pToolTipCtrl; m_pToolTipCtrl = NULL; } else { EnableToolTips(TRUE); // Delay initial show & reshow int iTime = m_pToolTipCtrl->GetDelayTime(TTDT_AUTOPOP); m_pToolTipCtrl->SetDelayTime(TTDT_AUTOPOP, iTime * 4); m_pToolTipCtrl->Activate(TRUE); m_pToolTipCtrl->SetMaxTipWidth(500); AddTool(IDC_COPYPASSWORD, IDS_CLICKTOCOPYGENPSWD); } // Load bitmap UINT nImageID = PWSprefs::GetInstance()->GetPref(PWSprefs::UseNewToolbar) ? IDB_COPYPASSWORD_NEW : IDB_COPYPASSWORD_CLASSIC; BOOL brc = m_CopyPswdBitmap.Attach(::LoadImage( ::AfxFindResourceHandle(MAKEINTRESOURCE(nImageID), RT_BITMAP), MAKEINTRESOURCE(nImageID), IMAGE_BITMAP, 0, 0, (LR_DEFAULTSIZE | LR_CREATEDIBSECTION | LR_SHARED))); ASSERT(brc); if (brc) { FixBitmapBackground(m_CopyPswdBitmap); CButton *pBtn = (CButton *)GetDlgItem(IDC_COPYPASSWORD); ASSERT(pBtn != NULL); if (pBtn != NULL) pBtn->SetBitmap(m_CopyPswdBitmap); } ShowWindow(SW_SHOW); return TRUE; }
BOOL CPasswordPolicyDlg::OnInitDialog() { CPWDialog::OnInitDialog(); // If started with Tall and won't fit - return to be called again with Wide if (m_bLongPPs && !GetMainDlg()->LongPPs(this)) { EndDialog(-1); return FALSE; } if (m_bReadOnly && m_uicaller != IDS_GENERATEPASSWORD) { // Change OK button test CString cs_close(MAKEINTRESOURCE(IDS_CLOSE)); GetDlgItem(IDOK)->SetWindowText(cs_close); // Hide the Cancel button GetDlgItem(IDCANCEL)->EnableWindow(FALSE); GetDlgItem(IDCANCEL)->ShowWindow(SW_HIDE); } CString cs_title; switch (m_uicaller) { case IDS_OPTIONS: // Set correct window title cs_title.LoadString(IDS_EDIT_DEFAULT_POLICY); SetWindowText(cs_title); // These are only used in Manage -> Generate Password or Add/Edit Policy names GetDlgItem(IDC_GENERATEPASSWORD)->EnableWindow(FALSE); GetDlgItem(IDC_GENERATEPASSWORD)->ShowWindow(SW_HIDE); GetDlgItem(IDC_COPYPASSWORD)->EnableWindow(FALSE); GetDlgItem(IDC_COPYPASSWORD)->ShowWindow(SW_HIDE); GetDlgItem(IDC_PASSWORD)->EnableWindow(FALSE); GetDlgItem(IDC_PASSWORD)->ShowWindow(SW_HIDE); GetDlgItem(IDC_POLICYNAME)->EnableWindow(FALSE); GetDlgItem(IDC_POLICYNAME)->ShowWindow(SW_HIDE); GetDlgItem(IDC_POLICYLIST)->EnableWindow(FALSE); GetDlgItem(IDC_POLICYLIST)->ShowWindow(SW_HIDE); GetDlgItem(IDC_USENAMED_POLICY)->EnableWindow(FALSE); GetDlgItem(IDC_USENAMED_POLICY)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC_NAMEDPOLICY)->ShowWindow(SW_HIDE); break; case IDS_GENERATEPASSWORD: { // Set correct window title cs_title.LoadString(IDS_GENERATEPASSWORD); SetWindowText(cs_title); // These are only used in Manage -> Add/Edit Policy names GetDlgItem(IDC_POLICYNAME)->EnableWindow(FALSE); GetDlgItem(IDC_POLICYNAME)->ShowWindow(SW_HIDE); // Used to generate passwords GetDlgItem(IDC_POLICYLIST)->ShowWindow(SW_SHOW); GetDlgItem(IDC_USENAMED_POLICY)->EnableWindow(TRUE); GetDlgItem(IDC_USENAMED_POLICY)->ShowWindow(SW_SHOW); GetDlgItem(IDC_STATIC_NAMEDPOLICY)->ShowWindow(SW_HIDE); // Populate the combo box m_cbxPolicyNames.ResetContent(); // Get all password policy names std::vector<std::wstring> vNames; GetMainDlg()->GetPolicyNames(vNames); // Add Default const CString cs_default(MAKEINTRESOURCE(IDSC_DEFAULT_POLICY)); m_cbxPolicyNames.AddString(cs_default); for (std::vector<std::wstring>::iterator iter = vNames.begin(); iter != vNames.end(); ++iter) { m_cbxPolicyNames.AddString(iter->c_str()); } // Select Default m_cbxPolicyNames.SelectString(-1, cs_default); // and check the box ((CButton *)GetDlgItem(IDC_USENAMED_POLICY))->SetCheck(BST_CHECKED); // Centre the OK button & change its text RECT rc, rcOK; CWnd *pOK = GetDlgItem(IDOK); GetClientRect(&rc); pOK->GetWindowRect(&rcOK); ScreenToClient(&rcOK); int top = rcOK.top; pOK->GetClientRect(&rcOK); int left = (rc.right - rcOK.right) / 2; pOK->MoveWindow(left, top, rcOK.right, rcOK.bottom); CString cs_close(MAKEINTRESOURCE(IDS_CLOSE)); pOK->SetWindowText(cs_close); // Hide the Cancel & Help buttons GetDlgItem(IDCANCEL)->EnableWindow(FALSE); GetDlgItem(IDCANCEL)->ShowWindow(SW_HIDE); GetDlgItem(ID_HELP)->EnableWindow(FALSE); GetDlgItem(ID_HELP)->ShowWindow(SW_HIDE); Fonts::GetInstance()->ApplyPasswordFont(GetDlgItem(IDC_PASSWORD)); m_ex_password.SetSecure(false); // Remove password character so that the password is displayed m_ex_password.SetPasswordChar(0); // Load bitmap UINT nImageID = PWSprefs::GetInstance()->GetPref(PWSprefs::UseNewToolbar) ? IDB_COPYPASSWORD_NEW : IDB_COPYPASSWORD_CLASSIC; BOOL brc = m_CopyPswdBitmap.Attach(::LoadImage( ::AfxFindResourceHandle(MAKEINTRESOURCE(nImageID), RT_BITMAP), MAKEINTRESOURCE(nImageID), IMAGE_BITMAP, 0, 0, (LR_DEFAULTSIZE | LR_CREATEDIBSECTION | LR_SHARED))); ASSERT(brc); FixBitmapBackground(m_CopyPswdBitmap); CButton *pBtn = (CButton *)GetDlgItem(IDC_COPYPASSWORD); pBtn->SetBitmap(m_CopyPswdBitmap); break; } case IDS_PSWDPOLICY: // Set correct window title cs_title.LoadString(m_policyname.IsEmpty() ? IDS_ADD_NAMED_POLICY : IDS_EDIT_NAMED_POLICY); SetWindowText(cs_title); // These are only used in Manage -> Password Policy GetDlgItem(IDC_GENERATEPASSWORD)->EnableWindow(FALSE); GetDlgItem(IDC_GENERATEPASSWORD)->ShowWindow(SW_HIDE); GetDlgItem(IDC_COPYPASSWORD)->EnableWindow(FALSE); GetDlgItem(IDC_COPYPASSWORD)->ShowWindow(SW_HIDE); GetDlgItem(IDC_PASSWORD)->EnableWindow(FALSE); GetDlgItem(IDC_PASSWORD)->ShowWindow(SW_HIDE); GetDlgItem(IDC_POLICYLIST)->EnableWindow(FALSE); GetDlgItem(IDC_POLICYLIST)->ShowWindow(SW_HIDE); GetDlgItem(IDC_USENAMED_POLICY)->EnableWindow(FALSE); GetDlgItem(IDC_USENAMED_POLICY)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC_NAMEDPOLICY)->ShowWindow(SW_SHOW); if (!m_policyname.IsEmpty() && m_iter->second.usecount > 0) { // Cannot edit the policy 'Name' if it is present and use count > 0 m_PolicyNameEdit.SetReadOnly(TRUE); m_PolicyNameEdit.EnableWindow(FALSE); } m_PolicyNameEdit.SetWindowText(m_policyname); // Max. length of policy name is 255 - only one byte used for length // in database header m_PolicyNameEdit.SetLimitText(255); break; } setupBuddy(this, IDC_PWLENSPIN, IDC_DEFPWLENGTH, m_PWDefaultLength, 4); setupBuddy(this, IDC_SPINDIGITS, IDC_MINDIGITLENGTH, m_PWDigitMinLength); setupBuddy(this, IDC_SPINLOWERCASE, IDC_MINLOWERLENGTH, m_PWLowerMinLength); setupBuddy(this, IDC_SPINUPPERCASE, IDC_MINUPPERLENGTH, m_PWUpperMinLength); setupBuddy(this, IDC_SPINSYMBOLS, IDC_MINSYMBOLLENGTH, m_PWSymbolMinLength); m_save[SAVE_LOWERCASE] = m_PWUseLowercase; m_save[SAVE_UPPERCASE] = m_PWUseUppercase; m_save[SAVE_DIGITS] = m_PWUseDigits; m_save[SAVE_SYMBOLS] = m_PWUseSymbols; m_save[SAVE_EASYVISION] = m_PWEasyVision; m_save[SAVE_PRONOUNCEABLE] = m_PWMakePronounceable; m_savelen[SAVE_LOWERCASE] = m_PWLowerMinLength; m_savelen[SAVE_UPPERCASE] = m_PWUpperMinLength; m_savelen[SAVE_DIGITS] = m_PWDigitMinLength; m_savelen[SAVE_SYMBOLS] = m_PWSymbolMinLength; // Set up the correct controls (enabled/disabled) do_hex(m_PWUseHexdigits == TRUE); int iSet = EVPR_NONE; if (m_PWEasyVision == TRUE) iSet = EVPR_EV; else if (m_PWMakePronounceable == TRUE) iSet = EVPR_PR; do_easyorpronounceable(iSet); GetDlgItem(IDC_OWNSYMBOLS)->EnableWindow(m_PWUseSymbols); GetDlgItem(IDC_RESET_SYMBOLS)->EnableWindow(m_PWUseSymbols); m_SymbolsEdit.SetWindowText(m_Symbols); if (m_uicaller == IDS_GENERATEPASSWORD) { // Disable Specific policy controls as default is to use a named policy (database default) SetSpecificPolicyControls(FALSE); m_pToolTipCtrl = new CToolTipCtrl; if (!m_pToolTipCtrl->Create(this, TTS_ALWAYSTIP | TTS_BALLOON | TTS_NOPREFIX)) { pws_os::Trace(L"Unable To create Advanced Dialog ToolTip\n"); delete m_pToolTipCtrl; m_pToolTipCtrl = NULL; return TRUE; } // Tooltips EnableToolTips(); // Activate the tooltip control. m_pToolTipCtrl->Activate(TRUE); m_pToolTipCtrl->SetMaxTipWidth(300); // Quadruple the time to allow reading by user int iTime = m_pToolTipCtrl->GetDelayTime(TTDT_AUTOPOP); m_pToolTipCtrl->SetDelayTime(TTDT_AUTOPOP, 4 * iTime); AddTool(IDC_COPYPASSWORD, IDS_CLICKTOCOPY); } // Set appropriate focus GetDlgItem(m_uicaller == IDS_GENERATEPASSWORD ? IDC_GENERATEPASSWORD : IDCANCEL)->SetFocus(); return FALSE; }