windows-nt/Source/XPSP1/NT/admin/wizards/addusrw/hours.cpp
2020-09-26 16:20:57 +08:00

166 lines
3.3 KiB
C++

/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
Hours.cpp : implementation file
CPropertyPage support for User mgmt wizard
File History:
JonY Apr-96 created
--*/
#include "stdafx.h"
#include "Speckle.h"
#include "wizbased.h"
#include "Timelist.h"
#include "Hours.h"
#include "hours1.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CHoursDlg property page
IMPLEMENT_DYNCREATE(CHoursDlg, CWizBaseDlg)
CHoursDlg::CHoursDlg() : CWizBaseDlg(CHoursDlg::IDD)
{
//{{AFX_DATA_INIT(CHoursDlg)
//}}AFX_DATA_INIT
m_swDisAllowed.bWhich = FALSE;
m_swAllowed.bWhich = TRUE;
}
CHoursDlg::~CHoursDlg()
{
}
void CHoursDlg::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CHoursDlg)
DDX_Control(pDX, IDC_STATIC_DISALLOWEDTIMES, m_swDisAllowed);
DDX_Control(pDX, IDC_STATIC_ALLOWEDTIMES, m_swAllowed);
DDX_Control(pDX, IDC_HOURSCTRL1, m_ccHours);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CHoursDlg, CWizBaseDlg)
//{{AFX_MSG_MAP(CHoursDlg)
ON_WM_SHOWWINDOW()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CHoursDlg message handlers
BOOL CHoursDlg::OnInitDialog()
{
CWizBaseDlg::OnInitDialog();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
LRESULT CHoursDlg::OnWizardNext()
{
UpdateData(TRUE);
CSpeckleApp* pApp = (CSpeckleApp*)AfxGetApp();
// build a SAFEARRAY to receive data from the control
VARIANT vaResult;
VariantInit(&vaResult);
vaResult.vt = VT_ARRAY | VT_UI1;
SAFEARRAYBOUND sab[1];
sab[0].cElements = 21;
sab[0].lLbound = 0;
vaResult.parray = SafeArrayCreate(VT_UI1, 1, sab);
void* vRet;
BYTE* bRet;
// get the data from the control
vaResult = m_ccHours.GetDateData();
SafeArrayAccessData(vaResult.parray, &vRet);
USHORT sCount = 0;
bRet = (BYTE*)vRet;
while (sCount < 21)
{
memcpy(&pApp->m_pHours[sCount], bRet + (sCount * sizeof(BYTE)), sizeof(BYTE));
sCount++;
}
if (pApp->m_bWorkstation) return IDD_LOGONTO_DLG;
else if (pApp->m_bNW) return IDD_NWLOGON_DIALOG;
else return IDD_FINISH;
}
LRESULT CHoursDlg::OnWizardBack()
{
CSpeckleApp* pApp = (CSpeckleApp*)AfxGetApp();
if (pApp->m_bExpiration) return IDD_ACCOUNT_EXP_DIALOG;
return IDD_RESTRICTIONS_DIALOG;
}
void CHoursDlg::OnShowWindow(BOOL bShow, UINT nStatus)
{
CWizBaseDlg::OnShowWindow(bShow, nStatus);
if (bShow)
{
m_ccHours.SetCrPermitColor(GetSysColor(COLOR_ACTIVECAPTION));
m_ccHours.SetCrDenyColor(GetSysColor(COLOR_CAPTIONTEXT));
}
}
/////////////////////////////////////////////////////////////////////////////
// CSWnd
CSWnd::CSWnd()
{
}
CSWnd::~CSWnd()
{
}
BEGIN_MESSAGE_MAP(CSWnd, CStatic)
//{{AFX_MSG_MAP(CSWnd)
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CSWnd message handlers
void CSWnd::OnPaint()
{
CPaintDC dc(this); // device context for painting
if (bWhich) dc.FillRect(&dc.m_ps.rcPaint, CBrush::FromHandle(CreateSolidBrush(GetSysColor(COLOR_ACTIVECAPTION))));
else dc.FillRect(&dc.m_ps.rcPaint, CBrush::FromHandle(CreateSolidBrush(GetSysColor(COLOR_CAPTIONTEXT))));
// Do not call CStatic::OnPaint() for painting messages
}