CHOOSER.CPP
上传用户:bangxh
上传日期:2007-01-31
资源大小:42235k
文件大小:3k
源码类别:

Windows编程

开发平台:

Visual C++

  1. // chooser.cpp : implementation of the CDialogChooser class
  2. //
  3. // Copyright (c) 1985-1998, Microsoft Corporation. All rights reserved.
  4. //
  5. #include "stdafx.h"
  6. #include "customwz.h"
  7. #include "sampleaw.h"
  8. #include "chooser.h"
  9. #include "typedlg.h"
  10. #include "zapdlg.h"
  11. #include "seqdlg.h"
  12. #ifdef _PSEUDO_DEBUG
  13. #undef THIS_FILE
  14. static char THIS_FILE[] = __FILE__;
  15. #endif
  16. // On construction, create instances of each step we can pop up.
  17. CDialogChooser::CDialogChooser()
  18. {
  19. m_pDlgs[0] = NULL;
  20. m_pDlgs[DLG_CUSTOMTYPE] = new CCustomTypeDlg;
  21. m_pDlgs[DLG_ZAP] = new CZapDlg;
  22. m_pDlgs[DLG_SEQUENCE] = new CSequenceDlg;
  23. m_nCurrDlg = 0;     // We start with the New Project dialog
  24. m_nCustomType = CUSTOMTYPE_ZAP; // Default custom appwiz type is base
  25. }
  26. // On deconstruction, destroy instances of each step.
  27. CDialogChooser::~CDialogChooser()
  28. {
  29. for (int i=1; i <= NUM_DLGS; i++)
  30. {
  31. ASSERT(m_pDlgs[i] != NULL);
  32. delete m_pDlgs[i];
  33. }
  34. }
  35. void CDialogChooser::UpdateTitleIfNecessary()
  36. {
  37. static CString strPreviousRoot;
  38. CString strCurrentRoot;
  39. sampleaw.m_Dictionary.Lookup(_T("Root"), strCurrentRoot);
  40. if (strCurrentRoot != strPreviousRoot)
  41. {
  42. // The project name has changed, so update the
  43. //  default value of the custom AppWizard's title
  44. ((CCustomTypeDlg*) m_pDlgs[DLG_CUSTOMTYPE])->UpdateTitle(strCurrentRoot);
  45. strPreviousRoot = strCurrentRoot;
  46. }
  47. }
  48. // On Next, use the custom AppWizard type we're generating to determine what
  49. //  dialog to pop up.
  50. CAppWizStepDlg* CDialogChooser::Next(CAppWizStepDlg* pDlg)
  51. {
  52. ASSERT(pDlg == m_pDlgs[m_nCurrDlg]);
  53. ASSERT(0 == m_nCurrDlg || m_nCurrDlg == DLG_CUSTOMTYPE);
  54. if (pDlg == NULL)   // i.e., if the New Project Dialog is present,
  55. {
  56. m_nCurrDlg = DLG_CUSTOMTYPE;    // Then pop up our first step
  57. UpdateTitleIfNecessary();   // and update title's default
  58. }
  59. else if (m_nCustomType == CUSTOMTYPE_ZAP)
  60. {
  61. m_nCurrDlg = DLG_ZAP;       // Pop up the zap step
  62. }
  63. else    // m_nCustomType == CUSTOMTYPE_SEQUENCE
  64. {
  65. m_nCurrDlg = DLG_SEQUENCE;  // Pop up the appwiz sequence step
  66. }
  67. return m_pDlgs[m_nCurrDlg];
  68. }
  69. // On Back, determine whether we should go back to the New Project
  70. //  dialog, or back to step 1.
  71. CAppWizStepDlg* CDialogChooser::Back(CAppWizStepDlg* pDlg)
  72. {
  73. ASSERT(pDlg == m_pDlgs[m_nCurrDlg]);
  74. ASSERT(0 < m_nCurrDlg && m_nCurrDlg <= NUM_DLGS);
  75. if (m_nCurrDlg == DLG_CUSTOMTYPE)
  76. m_nCurrDlg = 0; // If we're on step 1, go to New Project dialog
  77. else
  78. m_nCurrDlg = DLG_CUSTOMTYPE;    // Otherwise, go to step 1
  79. return m_pDlgs[m_nCurrDlg];
  80. }