//+--------------------------------------------------------------------------- // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1997-2001. // // File: SelAcct.cpp // // Contents: Implementation of property page to allow account selection for // cert management // //---------------------------------------------------------------------------- #include "stdafx.h" #include "SelAcct.h" #ifdef _DEBUG #ifndef ALPHA #define new DEBUG_NEW #endif #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif extern HINSTANCE g_hInstance; ///////////////////////////////////////////////////////////////////////////// // CSelectAccountPropPage property page //IMPLEMENT_DYNCREATE(CSelectAccountPropPage, CAutoDeletePropPage) CSelectAccountPropPage::CSelectAccountPropPage (const bool bIsWindowsNT) : CAutoDeletePropPage(CSelectAccountPropPage::IDD), m_pdwLocation (0), m_bIsWindowsNT (bIsWindowsNT) { //{{AFX_DATA_INIT(CSelectAccountPropPage) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } CSelectAccountPropPage::~CSelectAccountPropPage() { } void CSelectAccountPropPage::DoDataExchange(CDataExchange* pDX) { CAutoDeletePropPage::DoDataExchange(pDX); //{{AFX_DATA_MAP(CSelectAccountPropPage) // NOTE: the ClassWizard will add DDX and DDV calls here //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CSelectAccountPropPage, CAutoDeletePropPage) //{{AFX_MSG_MAP(CSelectAccountPropPage) ON_BN_CLICKED(IDC_PERSONAL_ACCT, OnPersonalAcct) ON_BN_CLICKED(IDC_SERVICE_ACCT, OnServiceAcct) ON_BN_CLICKED(IDC_MACHINE_ACCT, OnMachineAcct) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CSelectAccountPropPage message handlers BOOL CSelectAccountPropPage::OnInitDialog() { AfxSetResourceHandle (g_hInstance); ASSERT (m_pdwLocation); if ( m_pdwLocation ) *m_pdwLocation = CERT_SYSTEM_STORE_CURRENT_USER; CAutoDeletePropPage::OnInitDialog(); GetDlgItem (IDC_PERSONAL_ACCT)->SendMessage (BM_SETCHECK, BST_CHECKED, 0); if ( !m_bIsWindowsNT ) { GetDlgItem (IDC_SERVICE_ACCT)->EnableWindow (FALSE); } return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CSelectAccountPropPage::AssignLocationPtr(DWORD * pdwLocation) { m_pdwLocation = pdwLocation; } ///////////////////////////////////////////////////////////////////////////// // MyPropertyPage message handlers void CSelectAccountPropPage::OnPersonalAcct() { ASSERT (m_pdwLocation); if ( m_pdwLocation ) { *m_pdwLocation = CERT_SYSTEM_STORE_CURRENT_USER; GetParent ()->SendMessage (PSM_SETWIZBUTTONS, 0, PSWIZB_FINISH); } } void CSelectAccountPropPage::OnServiceAcct() { ASSERT (m_pdwLocation); if ( m_pdwLocation ) { *m_pdwLocation = CERT_SYSTEM_STORE_SERVICES; GetParent ()->SendMessage (PSM_SETWIZBUTTONS, 0, PSWIZB_NEXT); } } void CSelectAccountPropPage::OnMachineAcct() { ASSERT (m_pdwLocation); if ( m_pdwLocation ) { *m_pdwLocation = CERT_SYSTEM_STORE_LOCAL_MACHINE; GetParent ()->SendMessage (PSM_SETWIZBUTTONS, 0, PSWIZB_NEXT); } } BOOL CSelectAccountPropPage::OnSetActive() { BOOL bResult = CAutoDeletePropPage::OnSetActive(); ASSERT (bResult); if ( bResult ) { if ( m_bIsWindowsNT ) { if ( GetDlgItem (IDC_PERSONAL_ACCT)->SendMessage (BM_GETCHECK, BST_CHECKED, 0) == BST_CHECKED ) { GetParent ()->PostMessage (PSM_SETWIZBUTTONS, 0, PSWIZB_FINISH); } else { GetParent ()->PostMessage (PSM_SETWIZBUTTONS, 0, PSWIZB_NEXT); } } else { // If Windows 95 or Windows 98, we only allow local machine GetParent ()->PostMessage (PSM_SETWIZBUTTONS, 0, PSWIZB_FINISH); } } return bResult; }