//+--------------------------------------------------------------------------- ///////////////////////////////////////////////////////////////////////////////// // // Microsoft Windows // Copyright (C) Microsoft Corporation, 2000-2002. // // File: SaferEntryInternetZonePropertyPage.cpp // // Contents: Implementation of CSaferEntryInternetZonePropertyPage // //---------------------------------------------------------------------------- // SaferEntryInternetZonePropertyPage.cpp : implementation file // #include "stdafx.h" #include #include "certmgr.h" #include "compdata.h" #include "SaferEntryInternetZonePropertyPage.h" #include "SaferUtil.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CSaferEntryInternetZonePropertyPage property page CSaferEntryInternetZonePropertyPage::CSaferEntryInternetZonePropertyPage( CSaferEntry& rSaferEntry, bool bNew, LONG_PTR lNotifyHandle, LPDATAOBJECT pDataObject, bool bReadOnly, CCertMgrComponentData* pCompData, bool bIsMachine, bool* pbObjectCreated /* = 0 */) : CSaferPropertyPage(CSaferEntryInternetZonePropertyPage::IDD, pbObjectCreated, pCompData, rSaferEntry, bNew, lNotifyHandle, pDataObject, bReadOnly, bIsMachine) { //{{AFX_DATA_INIT(CSaferEntryInternetZonePropertyPage) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } CSaferEntryInternetZonePropertyPage::~CSaferEntryInternetZonePropertyPage() { } void CSaferEntryInternetZonePropertyPage::DoDataExchange(CDataExchange* pDX) { CSaferPropertyPage::DoDataExchange(pDX); //{{AFX_DATA_MAP(CSaferEntryInternetZonePropertyPage) DDX_Control(pDX, IDC_IZONE_ENTRY_ZONES, m_internetZoneCombo); DDX_Control(pDX, IDC_IZONE_ENTRY_SECURITY_LEVEL, m_securityLevelCombo); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CSaferEntryInternetZonePropertyPage, CSaferPropertyPage) //{{AFX_MSG_MAP(CSaferEntryInternetZonePropertyPage) ON_CBN_SELCHANGE(IDC_IZONE_ENTRY_SECURITY_LEVEL, OnSelchangeIzoneEntrySecurityLevel) ON_CBN_SELCHANGE(IDC_IZONE_ENTRY_ZONES, OnSelchangeIzoneEntryZones) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CSaferEntryInternetZonePropertyPage message handlers BOOL CSaferEntryInternetZonePropertyPage::OnInitDialog() { CSaferPropertyPage::OnInitDialog(); // Set up User Notification combo box DWORD dwFlags = 0; m_rSaferEntry.GetFlags (dwFlags); ASSERT (m_pCompData); if ( m_pCompData ) { CPolicyKey policyKey (m_pCompData->m_pGPEInformation, SAFER_HKLM_REGBASE, m_bIsMachine); InitializeSecurityLevelComboBox (m_securityLevelCombo, false, m_rSaferEntry.GetLevel (), policyKey.GetKey (), m_pCompData->m_pdwSaferLevels, m_bIsMachine); InitializeInternetZoneComboBox (m_rSaferEntry.GetURLZoneID ()); SendDlgItemMessage (IDC_IZONE_ENTRY_DESCRIPTION, EM_LIMITTEXT, SAFER_MAX_DESCRIPTION_SIZE-1, 0); SetDlgItemText (IDC_IZONE_ENTRY_DESCRIPTION, m_rSaferEntry.GetDescription ()); SetDlgItemText (IDC_IZONE_ENTRY_LAST_MODIFIED, m_rSaferEntry.GetLongLastModified ()); if ( m_bReadOnly ) { m_securityLevelCombo.EnableWindow (FALSE); m_internetZoneCombo.EnableWindow (FALSE); } if ( !m_bDirty ) { CString szText; VERIFY (szText.LoadString (IDS_URLZONE_TITLE)); SetDlgItemText (IDC_URLZONE_TITLE, szText); } else { GetDlgItem (IDC_DATE_LAST_MODIFIED_LABEL)->ShowWindow (SW_HIDE); GetDlgItem (IDC_IZONE_ENTRY_LAST_MODIFIED)->ShowWindow (SW_HIDE); } } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CSaferEntryInternetZonePropertyPage::InitializeInternetZoneComboBox (DWORD UrlZoneId) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); CString szText; VERIFY (szText.LoadString (IDS_URLZONE_LOCAL_MACHINE)); int nItem = m_internetZoneCombo.AddString (szText); ASSERT (nItem >= 0); if ( nItem >= 0 ) { if ( URLZONE_LOCAL_MACHINE == UrlZoneId ) VERIFY (CB_ERR != m_internetZoneCombo.SetCurSel (nItem)); VERIFY (CB_ERR != m_internetZoneCombo.SetItemData (nItem, URLZONE_LOCAL_MACHINE)); } VERIFY (szText.LoadString (IDS_URLZONE_INTRANET)); nItem = m_internetZoneCombo.AddString (szText); ASSERT (nItem >= 0); if ( nItem >= 0 ) { if ( URLZONE_INTRANET == UrlZoneId ) VERIFY (CB_ERR != m_internetZoneCombo.SetCurSel (nItem)); VERIFY (CB_ERR != m_internetZoneCombo.SetItemData (nItem, URLZONE_INTRANET)); } VERIFY (szText.LoadString (IDS_URLZONE_TRUSTED)); nItem = m_internetZoneCombo.AddString (szText); ASSERT (nItem >= 0); if ( nItem >= 0 ) { if ( URLZONE_TRUSTED == UrlZoneId ) VERIFY (CB_ERR != m_internetZoneCombo.SetCurSel (nItem)); VERIFY (CB_ERR != m_internetZoneCombo.SetItemData (nItem, URLZONE_TRUSTED)); } VERIFY (szText.LoadString (IDS_URLZONE_INTERNET)); nItem = m_internetZoneCombo.AddString (szText); ASSERT (nItem >= 0); if ( nItem >= 0 ) { if ( URLZONE_INTERNET == UrlZoneId ) VERIFY (CB_ERR != m_internetZoneCombo.SetCurSel (nItem)); VERIFY (CB_ERR != m_internetZoneCombo.SetItemData (nItem, URLZONE_INTERNET)); } VERIFY (szText.LoadString (IDS_URLZONE_UNTRUSTED)); nItem = m_internetZoneCombo.AddString (szText); ASSERT (nItem >= 0); if ( nItem >= 0 ) { if ( URLZONE_UNTRUSTED == UrlZoneId ) VERIFY (CB_ERR != m_internetZoneCombo.SetCurSel (nItem)); VERIFY (CB_ERR != m_internetZoneCombo.SetItemData (nItem, URLZONE_UNTRUSTED)); } } void CSaferEntryInternetZonePropertyPage::DoContextHelp (HWND hWndControl) { _TRACE (1, L"Entering CSaferEntryInternetZonePropertyPage::DoContextHelp\n"); static const DWORD help_map[] = { IDC_IZONE_ENTRY_ZONES, IDH_IZONE_ENTRY_ZONES, IDC_IZONE_ENTRY_SECURITY_LEVEL, IDH_IZONE_ENTRY_SECURITY_LEVEL, IDC_IZONE_ENTRY_DESCRIPTION, IDH_IZONE_ENTRY_DESCRIPTION, IDC_IZONE_ENTRY_LAST_MODIFIED, IDH_IZONE_ENTRY_LAST_MODIFIED, 0, 0 }; switch (::GetDlgCtrlID (hWndControl)) { case IDC_IZONE_ENTRY_ZONES: case IDC_IZONE_ENTRY_SECURITY_LEVEL: case IDC_IZONE_ENTRY_DESCRIPTION: case IDC_IZONE_ENTRY_LAST_MODIFIED: if ( !::WinHelp ( hWndControl, GetF1HelpFilename(), HELP_WM_HELP, (DWORD_PTR) help_map) ) { _TRACE (0, L"WinHelp () failed: 0x%x\n", GetLastError ()); } break; default: break; } _TRACE (-1, L"Leaving CSaferEntryInternetZonePropertyPage::DoContextHelp\n"); } BOOL CSaferEntryInternetZonePropertyPage::OnApply() { if ( m_bDirty && !m_bReadOnly ) { // Set the level int nCurSel = m_securityLevelCombo.GetCurSel (); ASSERT (CB_ERR != nCurSel); m_rSaferEntry.SetLevel ((DWORD) m_securityLevelCombo.GetItemData (nCurSel)); int nSel = m_internetZoneCombo.GetCurSel (); ASSERT (CB_ERR != nSel); if ( CB_ERR != nSel ) { DWORD_PTR dwURLZoneID = m_internetZoneCombo.GetItemData (nSel); ASSERT (CB_ERR != dwURLZoneID); if ( CB_ERR != dwURLZoneID ) m_rSaferEntry.SetURLZoneID ((DWORD) dwURLZoneID); } HRESULT hr = m_rSaferEntry.Save (); if ( SUCCEEDED (hr) ) { if ( m_lNotifyHandle ) MMCPropertyChangeNotify ( m_lNotifyHandle, // handle to a notification (LPARAM) m_pDataObject); // unique identifier if ( m_pbObjectCreated ) *m_pbObjectCreated = true; m_rSaferEntry.Refresh (); GetDlgItem (IDC_DATE_LAST_MODIFIED_LABEL)->ShowWindow (SW_SHOW); GetDlgItem (IDC_IZONE_ENTRY_LAST_MODIFIED)->ShowWindow (SW_SHOW); GetDlgItem (IDC_DATE_LAST_MODIFIED_LABEL)->UpdateWindow (); GetDlgItem (IDC_IZONE_ENTRY_LAST_MODIFIED)->UpdateWindow (); SetDlgItemText (IDC_IZONE_ENTRY_LAST_MODIFIED, m_rSaferEntry.GetLongLastModified ()); m_bDirty = false; } else { CString text; CString caption; CThemeContextActivator activator; VERIFY (caption.LoadString (IDS_SAFER_WINDOWS_NODE_NAME)); text.FormatMessage (IDS_ERROR_SAVING_ENTRY, GetSystemMessage (hr)); MessageBox (text, caption, MB_OK); return FALSE; } } return CSaferPropertyPage::OnApply(); } void CSaferEntryInternetZonePropertyPage::OnSelchangeIzoneEntrySecurityLevel() { m_bDirty = true; SetModified (); } void CSaferEntryInternetZonePropertyPage::OnSelchangeIzoneEntryZones() { int nSel = m_internetZoneCombo.GetCurSel (); ASSERT (CB_ERR != nSel); if ( CB_ERR != nSel ) { DWORD_PTR dwURLZoneID = m_internetZoneCombo.GetItemData (nSel); ASSERT (CB_ERR != dwURLZoneID); if ( CB_ERR != dwURLZoneID ) m_rSaferEntry.SetURLZoneID ((DWORD) dwURLZoneID); } SetDlgItemText (IDC_IZONE_ENTRY_DESCRIPTION, m_rSaferEntry.GetDescription ()); m_bDirty = true; SetModified (); }