home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
distrib.akp.su/Programming/Vb-6+Rus/
/
distrib.akp.su.tar
/
distrib.akp.su
/
Programming
/
Vb-6+Rus
/
COMMON
/
MSDEV98
/
BIN
/
IDE
/
CUSTMWZ.AWX
/
TEMPLATE
/
CHOOSER.CPP
next >
Wrap
C/C++ Source or Header
|
1998-06-18
|
4KB
|
139 lines
// chooser.cpp : Implements the CDialogChooser class
//
#include "stdafx.h"
#include "$$root$$.h"
#include "chooser.h"
$$BEGINLOOP(NUM_NEW_STEPS)
#include "cstm$$ITERATOR$$dlg.h"
$$ENDLOOP
$$IF(APWZSEQ_EXE)
#include "$$filebase$$aw.h"
$$ENDIF //APWZSEQ_EXE
#ifdef _PSEUDO_DEBUG
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
// On construction, set up internal array with pointers to each step.
CDialogChooser::CDialogChooser()
{
m_pDlgs[0] = NULL;
$$IF(APWZSEQ_EXE)
m_pDlgs[1] = GetDialog(APWZDLG_APPTYPE);
m_pDlgs[2] = GetDialog(APWZDLG_DATABASE);
m_pDlgs[3] = GetDialog(APWZDLG_OLE);
m_pDlgs[4] = GetDialog(APWZDLG_DOCAPPOPTIONS);
m_pDlgs[5] = GetDialog(APWZDLG_PROJOPTIONS);
m_pDlgs[6] = GetDialog(APWZDLG_CLASSES);
m_pDlgs[7] = GetDialog(APWZDLG_DLGAPPOPTIONS);
$$ELIF(APWZSEQ_DLL)
m_pDlgs[1] = GetDialog(APWZDLG_DLLPROJOPTIONS);
$$ENDIF //APWZSEQ_EXE,_DLL
$$IF(HAS_NEW_STEPS)
$$BEGINLOOP(NUM_NEW_STEPS)
m_pDlgs[$$MPDLGS_INDEX$$] = new CCustom$$ITERATOR$$Dlg;
$$ENDLOOP
$$ENDIF //HAS_NEW_STEPS
m_nCurrDlg = 0;
$$IF(APWZSEQ_EXE)
m_nTrack = 0;
$$ENDIF
}
$$IF(HAS_NEW_STEPS)
// Remember where the custom steps begin, so we can delete them in
// the destructor
#define FIRST_CUSTOM_STEP $$MPDLGS_INDEX_0$$
#define LAST_CUSTOM_STEP $$MPDLGS_INDEX_LAST$$
$$ENDIF //HAS_NEW_STEPS
$$IF(APWZSEQ_EXE)
// Set up arrays of indices to simulate behavior of AppWizard (i.e., to have
// separate "tracks" for an MDI/SDI app and a dialog-based app).
static int nDocTrack[] = {0, 1, 2, 3, 4, 5, 6$$CUSTOM_INDICES$$};
static int nDlgTrack[] = {0, 1, 7, 5, 6$$CUSTOM_INDICES$$};
static int* pnTrack[] = {nDocTrack, nDlgTrack};
static int nLast[] = {$$LAST_DOCTRACK_INDEX$$, $$LAST_DLGTRACK_INDEX$$};
$$ENDIF //APWZSEQ_EXE
$$IF(HAS_NEW_STEPS)
// The destructor deletes entries in the internal array corresponding to
// custom steps.
CDialogChooser::~CDialogChooser()
{
$$IF(CUSTOMTYPE_SEQUENCE)
// NOTE: Be sure to delete all of your custom steps here, but don't delete
// any standard AppWizard steps you got through the GetDialog API.
$$ENDIF //CUSTOMTYPE_SEQUENCE
for (int i = FIRST_CUSTOM_STEP; i <= LAST_CUSTOM_STEP; i++)
{
ASSERT(m_pDlgs[i] != NULL);
delete m_pDlgs[i];
}
}
$$ENDIF //HAS_NEW_STEPS
// Use the internal array to determine the next step.
CAppWizStepDlg* CDialogChooser::Next(CAppWizStepDlg* pDlg)
{
$$IF(APWZSEQ_EXE)
ASSERT(m_nTrack == 0 || m_nTrack == 1);
ASSERT(0 <= m_nCurrDlg && m_nCurrDlg < nLast[m_nTrack]);
ASSERT(pDlg == m_pDlgs[(pnTrack[m_nTrack])[m_nCurrDlg]]);
// If the current step is the "project type" step, the AppWizard "track" may
// have changed.
if (m_nCurrDlg == 1)
{
CString strTemp;
m_nTrack = $$safe_root$$aw.m_Dictionary.Lookup(_T("PROJTYPE_DLG"), strTemp) ? 1 : 0;
SetNumberOfSteps(nLast[m_nTrack]);
}
m_nCurrDlg++;
// If the new step is the "project type" step, don't display the max number
// of steps.
if (m_nCurrDlg == 1)
SetNumberOfSteps(-1);
return m_pDlgs[(pnTrack[m_nTrack])[m_nCurrDlg]];
$$ELSE //!APWZSEQ_EXE
ASSERT(0 <= m_nCurrDlg && m_nCurrDlg < LAST_DLG);
ASSERT(pDlg == m_pDlgs[m_nCurrDlg]);
m_nCurrDlg++;
return m_pDlgs[m_nCurrDlg];
$$ENDIF //APWZSEQ_EXE
}
// Use the internal array to determine the previous step.
CAppWizStepDlg* CDialogChooser::Back(CAppWizStepDlg* pDlg)
{
$$IF(APWZSEQ_EXE)
ASSERT(m_nTrack == 0 || m_nTrack == 1);
ASSERT(1 <= m_nCurrDlg && m_nCurrDlg <= nLast[m_nTrack]);
ASSERT(pDlg == m_pDlgs[(pnTrack[m_nTrack])[m_nCurrDlg]]);
m_nCurrDlg--;
// If the new step is the "project type" step, don't display the max number
// of steps.
if (m_nCurrDlg == 1)
SetNumberOfSteps(-1);
return m_pDlgs[(pnTrack[m_nTrack])[m_nCurrDlg]];
$$ELSE //!APWZSEQ_EXE
ASSERT(1 <= m_nCurrDlg && m_nCurrDlg <= LAST_DLG);
ASSERT(pDlg == m_pDlgs[m_nCurrDlg]);
m_nCurrDlg--;
return m_pDlgs[m_nCurrDlg];
$$ENDIF //APWZSEQ_EXE
}