// PropSheet.cpp : implementation file
//

// This is a part of the Microsoft Foundation Classes C++ library.
// Copyright (C) 1992-1997 Microsoft Corporation
// All rights reserved.
//
// This source code is only intended as a supplement to the
// Microsoft Foundation Classes Reference and related
// electronic documentation provided with the library.
// See these sources for detailed information regarding the
// Microsoft Foundation Classes product.

#include "stdafx.h"
#include "propsht.h"
#include "EnrolDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CEnrollSheet

// IMPLEMENT_DYNAMIC(CEnrollSheet, CPropertySheet)

CEnrollSheet::CEnrollSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
	:CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
{
	//{{AFX_DATA_INIT(CEnrollSheet)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	AddControlPages();
}

CEnrollSheet::CEnrollSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
	:CPropertySheet(pszCaption, pParentWnd, iSelectPage)
{
	//{{AFX_DATA_INIT(CEnrollSheet)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
	AddControlPages();
}

CEnrollSheet::~CEnrollSheet()
{
}

void CEnrollSheet::AddControlPages()
{
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	m_psh.dwFlags |= PSP_USEHICON;
	m_psh.hIcon = m_hIcon;

	m_coursepage.m_pCourseRDC=&m_CourseRDC;	  // the cursor is available inside Course dlg 
	m_sectionpage.m_pCourseRDC=&m_CourseRDC;  // the cursor is available inside Section dlg

    AddPage(&m_coursepage);
    AddPage(&m_sectionpage);
    AddPage(&m_instructpage);
    AddPage(&m_studentpage);
}

void CEnrollSheet::DoDataExchange(CDataExchange* pDX)
{
	CPropertySheet::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CEnrollSheet)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CEnrollSheet, CPropertySheet)
	//{{AFX_MSG_MAP(CEnrollSheet)
	ON_WM_SYSCOMMAND()
	ON_WM_QUERYDRAGICON()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEnrollSheet message handlers

BOOL CEnrollSheet::OnInitDialog()
{
   	RECT r={ 0,0,150,30 };	 // must create the control common to all prop pages
	m_CourseRDC.Create(NULL,_T("Courses"),
					   WS_VISIBLE | WS_CHILD, r, this, IDC_RDCCOURSE);
	m_CourseRDC.SetDataSourceName(_T("Student Registration"));
	m_CourseRDC.SetSql(_T("SELECT * from Course"));
	m_CourseRDC.SetUserName(_T("admin"));
	m_CourseRDC.SetPassword(_T(""));
	m_CourseRDC.SetCursorDriver(2); // server side cursor


	CPropertySheet::OnInitDialog(); // init the sheet before getting ClientRect

	GetClientRect(&r);
	r.bottom-=4;r.top=r.bottom-30;  // place 30x150 control in
	r.left+=2;r.right=r.left+150;   // left-bottom sheet corner
//	m_CourseRDC.MoveWindow(&r,FALSE); //IOleObject::SetExtend() does not work on RDC2.0
	::MoveWindow(m_CourseRDC.m_hWnd,r.left,r.top,r.right-r.left,r.bottom-r.top, FALSE);

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	CString strAboutMenu;
	strAboutMenu.LoadString(IDS_ABOUTBOX);
	if (!strAboutMenu.IsEmpty())
	{
		pSysMenu->AppendMenu(MF_SEPARATOR);
		pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
	}

	// Set the icon for this dialog.  The framework does this automatically
	// when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon

	return TRUE;
}

void CEnrollSheet::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CPropertySheet::OnSysCommand(nID, lParam);
	}
}

// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CEnrollSheet::OnQueryDragIcon() 
{
	return (HCURSOR) m_hIcon;
}

/////////////////////////////////////////////////////////////////////////////
// CEnrollSheet event handlers
BEGIN_EVENTSINK_MAP(CEnrollSheet, CPropertySheet)
	ON_DSCNOTIFY(CEnrollSheet, IDC_RDCCOURSE, OnDSCNotify)
END_EVENTSINK_MAP()

//////////////////////////////////////////////////////
// This function is called each time the event was fired in IDC_RDCCOURSE control
// We use it to adjust COURSE & STUDENT query parameters in 
// course & section pages
//
BOOL CEnrollSheet::OnDSCNotify(DSCSTATE nState, DSCREASON nReason, BOOL* pBool)
{	// Course RDC's state changed 
	if(nReason==dscMove && nState==dscDidEvent) // row moved in course cursor
	{	// notify datasources in all pages about the move
		m_coursepage.OnCourseChanged();
		m_sectionpage.OnCourseChanged();
	}
	return TRUE;  // event handled

}

