Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

190 lines
4.5 KiB

  1. /*++
  2. Copyright (c) 1996 Microsoft Corporation
  3. Module Name:
  4. Restrct.cpp : implementation file
  5. CPropertyPage support for User mgmt wizard
  6. File History:
  7. JonY Apr-96 created
  8. --*/
  9. //
  10. //
  11. #include "stdafx.h"
  12. #include "speckle.h"
  13. #include "wizbased.h"
  14. #include "Restrct.h"
  15. #ifdef _DEBUG
  16. //#define new DEBUG_NEW
  17. #undef THIS_FILE
  18. static char THIS_FILE[] = __FILE__;
  19. #endif
  20. /////////////////////////////////////////////////////////////////////////////
  21. // CRestrictions property page
  22. IMPLEMENT_DYNCREATE(CRestrictions, CWizBaseDlg)
  23. CRestrictions::CRestrictions() : CWizBaseDlg(CRestrictions::IDD)
  24. {
  25. //{{AFX_DATA_INIT(CRestrictions)
  26. m_bAccountExpire = FALSE;
  27. m_bAccountDisabled = FALSE;
  28. m_bLoginTimes = FALSE;
  29. m_bLimitWorkstations = FALSE;
  30. m_nRestrictions = 0;
  31. m_csCaption = _T("");
  32. //}}AFX_DATA_INIT
  33. m_bEnable = FALSE;
  34. m_bHours = FALSE;
  35. }
  36. CRestrictions::~CRestrictions()
  37. {
  38. }
  39. void CRestrictions::DoDataExchange(CDataExchange* pDX)
  40. {
  41. CPropertyPage::DoDataExchange(pDX);
  42. //{{AFX_DATA_MAP(CRestrictions)
  43. DDX_Check(pDX, IDC_ACCOUNT_EXPIRE_CHECK, m_bAccountExpire);
  44. DDX_Check(pDX, IDC_DISABLED_CHECK, m_bAccountDisabled);
  45. DDX_Check(pDX, IDC_LOGIN_TIMES_CHECK, m_bLoginTimes);
  46. DDX_Check(pDX, IDC_WORKSTATIONS_CHECK, m_bLimitWorkstations);
  47. DDX_Radio(pDX, IDC_RESTRICTIONS_RADIO, m_nRestrictions);
  48. DDX_Text(pDX, IDC_STATIC1, m_csCaption);
  49. //}}AFX_DATA_MAP
  50. }
  51. BEGIN_MESSAGE_MAP(CRestrictions, CWizBaseDlg)
  52. //{{AFX_MSG_MAP(CRestrictions)
  53. ON_BN_CLICKED(IDC_RESTRICTIONS_RADIO, OnRestrictionsRadio)
  54. ON_BN_CLICKED(IDC_RESTRICTIONS_RADIO2, OnRestrictionsRadio2)
  55. ON_WM_SHOWWINDOW()
  56. //}}AFX_MSG_MAP
  57. END_MESSAGE_MAP()
  58. /////////////////////////////////////////////////////////////////////////////
  59. // CRestrictions message handlers
  60. LRESULT CRestrictions::OnWizardBack()
  61. {
  62. CSpeckleApp* pApp = (CSpeckleApp*)AfxGetApp();
  63. if (pApp->m_bExchange) return IDD_EXCHANGE_DIALOG;
  64. else if (pApp->m_bNW) return IDD_FPNW_DLG;
  65. else if (pApp->m_bRAS) return IDD_RAS_PERM_DIALOG;
  66. else if (pApp->m_bHomeDir) return IDD_HOMEDIR_DIALOG;
  67. else if (pApp->m_bLoginScript) return IDD_LOGON_SCRIPT_DIALOG;
  68. else if (pApp->m_bProfile) return IDD_PROFILE;
  69. else return IDD_OPTIONS_DIALOG;
  70. }
  71. LRESULT CRestrictions::OnWizardNext()
  72. {
  73. UpdateData(TRUE);
  74. CSpeckleApp* pApp = (CSpeckleApp*)AfxGetApp();
  75. pApp->m_bEnableRestrictions = m_bEnable;
  76. pApp->m_bExpiration = m_bAccountExpire & m_bEnable;
  77. pApp->m_bDisabled = m_bAccountDisabled & m_bEnable;
  78. pApp->m_bHours = m_bLoginTimes & m_bEnable;
  79. pApp->m_bWorkstation = m_bLimitWorkstations & m_bEnable;
  80. if (m_bAccountExpire & m_bEnable) return IDD_ACCOUNT_EXP_DIALOG;
  81. else if (m_bLoginTimes & m_bEnable) return IDD_HOURS_DLG;
  82. else if (m_bLimitWorkstations & m_bEnable) return IDD_LOGONTO_DLG;
  83. else if (pApp->m_bNW & m_bEnable) return IDD_NWLOGON_DIALOG;
  84. else return IDD_FINISH;
  85. return CWizBaseDlg::OnWizardNext();
  86. }
  87. void CRestrictions::OnRestrictionsRadio()
  88. {
  89. GetDlgItem(IDC_ACCOUNT_EXPIRE_CHECK)->EnableWindow(FALSE);
  90. GetDlgItem(IDC_DISABLED_CHECK)->EnableWindow(FALSE);
  91. GetDlgItem(IDC_LOGIN_TIMES_CHECK)->EnableWindow(FALSE);
  92. GetDlgItem(IDC_WORKSTATIONS_CHECK)->EnableWindow(FALSE);
  93. m_bEnable = FALSE;
  94. }
  95. void CRestrictions::OnRestrictionsRadio2()
  96. {
  97. GetDlgItem(IDC_ACCOUNT_EXPIRE_CHECK)->EnableWindow(TRUE);
  98. GetDlgItem(IDC_DISABLED_CHECK)->EnableWindow(TRUE);
  99. GetDlgItem(IDC_LOGIN_TIMES_CHECK)->EnableWindow(m_bHours);
  100. GetDlgItem(IDC_WORKSTATIONS_CHECK)->EnableWindow(TRUE);
  101. m_bEnable = TRUE;
  102. }
  103. void CRestrictions::OnShowWindow(BOOL bShow, UINT nStatus)
  104. {
  105. CWizBaseDlg::OnShowWindow(bShow, nStatus);
  106. if (bShow)
  107. {
  108. CSpeckleApp* pApp = (CSpeckleApp*)AfxGetApp();
  109. CString csTemp;
  110. csTemp.LoadString(IDS_RESTRICTION_CAPTION);
  111. CString csTemp2;
  112. csTemp2.Format(csTemp, pApp->m_csUserName);
  113. m_csCaption = csTemp2;
  114. UpdateData(FALSE);
  115. }
  116. }
  117. BOOL CRestrictions::OnInitDialog()
  118. {
  119. CWizBaseDlg::OnInitDialog();
  120. CString csPath;
  121. TCHAR pDir[256];
  122. GetSystemDirectory(pDir, 256);
  123. csPath = pDir;
  124. csPath += L"\\hours.ocx";
  125. HINSTANCE hLib = LoadLibrary((LPCTSTR)csPath);
  126. if (hLib < (HINSTANCE)HINSTANCE_ERROR)
  127. {
  128. m_bHours = FALSE; //unable to load DLL
  129. return TRUE;
  130. }
  131. // Find the entry point.
  132. FARPROC lpDllEntryPoint = NULL;
  133. (FARPROC&)lpDllEntryPoint = GetProcAddress(hLib,
  134. "DllRegisterServer");
  135. if (lpDllEntryPoint != NULL)
  136. {
  137. HRESULT h = (*lpDllEntryPoint)();
  138. if (h == 0) m_bHours = TRUE;
  139. else m_bHours = FALSE;
  140. }
  141. else
  142. m_bHours = FALSE;
  143. return TRUE; // return TRUE unless you set the focus to a control
  144. // EXCEPTION: OCX Property Pages should return FALSE
  145. }