home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tricks of the Windows Gam…ming Gurus (2nd Edition)
/
Disc2.iso
/
msdn_vcb
/
samples
/
vc98
/
appwiz
/
customwz
/
chooser.cpp
next >
Wrap
C/C++ Source or Header
|
1998-03-05
|
3KB
|
94 lines
// chooser.cpp : implementation of the CDialogChooser class
//
// Copyright (c) 1985-1998, Microsoft Corporation. All rights reserved.
//
#include "stdafx.h"
#include "customwz.h"
#include "sampleaw.h"
#include "chooser.h"
#include "typedlg.h"
#include "zapdlg.h"
#include "seqdlg.h"
#ifdef _PSEUDO_DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// On construction, create instances of each step we can pop up.
CDialogChooser::CDialogChooser()
{
m_pDlgs[0] = NULL;
m_pDlgs[DLG_CUSTOMTYPE] = new CCustomTypeDlg;
m_pDlgs[DLG_ZAP] = new CZapDlg;
m_pDlgs[DLG_SEQUENCE] = new CSequenceDlg;
m_nCurrDlg = 0; // We start with the New Project dialog
m_nCustomType = CUSTOMTYPE_ZAP; // Default custom appwiz type is base
}
// On deconstruction, destroy instances of each step.
CDialogChooser::~CDialogChooser()
{
for (int i=1; i <= NUM_DLGS; i++)
{
ASSERT(m_pDlgs[i] != NULL);
delete m_pDlgs[i];
}
}
void CDialogChooser::UpdateTitleIfNecessary()
{
static CString strPreviousRoot;
CString strCurrentRoot;
sampleaw.m_Dictionary.Lookup(_T("Root"), strCurrentRoot);
if (strCurrentRoot != strPreviousRoot)
{
// The project name has changed, so update the
// default value of the custom AppWizard's title
((CCustomTypeDlg*) m_pDlgs[DLG_CUSTOMTYPE])->UpdateTitle(strCurrentRoot);
strPreviousRoot = strCurrentRoot;
}
}
// On Next, use the custom AppWizard type we're generating to determine what
// dialog to pop up.
CAppWizStepDlg* CDialogChooser::Next(CAppWizStepDlg* pDlg)
{
ASSERT(pDlg == m_pDlgs[m_nCurrDlg]);
ASSERT(0 == m_nCurrDlg || m_nCurrDlg == DLG_CUSTOMTYPE);
if (pDlg == NULL) // i.e., if the New Project Dialog is present,
{
m_nCurrDlg = DLG_CUSTOMTYPE; // Then pop up our first step
UpdateTitleIfNecessary(); // and update title's default
}
else if (m_nCustomType == CUSTOMTYPE_ZAP)
{
m_nCurrDlg = DLG_ZAP; // Pop up the zap step
}
else // m_nCustomType == CUSTOMTYPE_SEQUENCE
{
m_nCurrDlg = DLG_SEQUENCE; // Pop up the appwiz sequence step
}
return m_pDlgs[m_nCurrDlg];
}
// On Back, determine whether we should go back to the New Project
// dialog, or back to step 1.
CAppWizStepDlg* CDialogChooser::Back(CAppWizStepDlg* pDlg)
{
ASSERT(pDlg == m_pDlgs[m_nCurrDlg]);
ASSERT(0 < m_nCurrDlg && m_nCurrDlg <= NUM_DLGS);
if (m_nCurrDlg == DLG_CUSTOMTYPE)
m_nCurrDlg = 0; // If we're on step 1, go to New Project dialog
else
m_nCurrDlg = DLG_CUSTOMTYPE; // Otherwise, go to step 1
return m_pDlgs[m_nCurrDlg];
}