home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / msdn_vcb / samples / vc98 / appwiz / hierwiz / cstm1dlg.cpp < prev    next >
C/C++ Source or Header  |  1998-03-05  |  5KB  |  206 lines

  1. // cstm1dlg.cpp : implementation file
  2. //
  3. // This is a part of the Microsoft Foundation Classes C++ library.
  4. // Copyright (C) 1992-1995 Microsoft Corporation
  5. // All rights reserved.
  6. //
  7. // This source code is only intended as a supplement to the
  8. // Microsoft Foundation Classes Reference and Microsoft
  9. // QuickHelp and/or WinHelp documentation provided with the library.
  10. // See these sources for detailed information regarding the
  11. // Microsoft Foundation Classes product.
  12.  
  13. #include "stdafx.h"
  14. #include "hierwiz.h"
  15. #include "Hierwaw.h"
  16. #include "cstm1dlg.h"
  17.  
  18. #ifdef _PSEUDO_DEBUG
  19. #undef THIS_FILE
  20. static char BASED_CODE THIS_FILE[] = __FILE__;
  21. #endif
  22.  
  23. /////////////////////////////////////////////////////////////////////////////
  24. // CCustom1Dlg dialog
  25. int CCustom1Dlg::m_DataSource = READFILE ;
  26.  
  27. CCustom1Dlg::CCustom1Dlg()
  28.     :CAppWizStepDlg(CCustom1Dlg::IDD)
  29. {
  30.     //{{AFX_DATA_INIT(CCustom1Dlg)
  31.     m_TextView = 0;
  32.     m_SampleDataSource = 0;
  33.     //}}AFX_DATA_INIT
  34. }
  35.  
  36.  
  37. void CCustom1Dlg::DoDataExchange(CDataExchange* pDX)
  38. {
  39.     CAppWizStepDlg::DoDataExchange(pDX) ;
  40.     //{{AFX_DATA_MAP(CCustom1Dlg)
  41.     DDX_Control(pDX, IDC_PICTURE, m_PicFrame);
  42.     DDX_Radio(pDX, IDC_TEXTVIEW, m_TextView);
  43.     DDX_Radio(pDX, IDC_READFILE, m_SampleDataSource);
  44.     //}}AFX_DATA_MAP
  45. }
  46.  
  47. // This is called whenever the user presses Next, Back, or Finish with this step
  48. //  present.  Do all validation & data exchange from the dialog in this function.
  49. BOOL CCustom1Dlg::OnDismiss()
  50. {
  51.     if (!UpdateData(TRUE))
  52.         return FALSE;
  53.     // Where are you getting the default data?
  54.     switch (m_SampleDataSource)  // From file
  55.     {
  56.         // Clear previously selected options in case the user changed his/her mind
  57.         ClearSampleTxtSettings() ;
  58.         case TEXT_FROM_FILE:
  59.             m_DataSource = READFILE ; // sample text read in from an existing file
  60.             hierwizaw.m_Dictionary.SetAt("OPEN_FILE","READFILE") ;
  61.             hierwizaw.m_Dictionary.SetAt("hiersample","mfcclass.hie") ;
  62.             break;
  63.  
  64.         case TEXT_FROM_KEYBOARD: // From keyboard input
  65.             m_DataSource = ENTERTEXT ; // sample text entered by user
  66.             // No input data until the user actually types in text on the next page.
  67.             hierwizaw.m_Dictionary.SetAt("NO_INPUT_DATA","YES") ;
  68.             break ;
  69.  
  70.         case NO_SAMPLE_TXT: // No sample data.
  71.             break ;
  72.     }
  73.     // Do you wants a text view?
  74.     if (m_TextView == 0)
  75.     {
  76.         hierwizaw.m_Dictionary.SetAt("WANTS_TEXTVIEW","YES") ;
  77.     }
  78.     else
  79.         hierwizaw.m_Dictionary.RemoveKey("WANTS_TEXTVIEW") ;
  80.  
  81.     return TRUE;    // return FALSE if the dialog shouldn't be dismissed
  82. }
  83.  
  84.  
  85. // Removes Read file related options in case the user changed his/her mind
  86. void CCustom1Dlg::ClearSampleTxtSettings()
  87. {
  88.     hierwizaw.m_Dictionary.RemoveKey("OPEN_FILE") ;
  89.     hierwizaw.m_Dictionary.RemoveKey("hiersample") ;
  90.     hierwizaw.m_Dictionary.RemoveKey("TEXT_FILE") ;
  91.     hierwizaw.m_Dictionary.RemoveKey("USER_INPUT_DATA") ;
  92.     hierwizaw.m_Dictionary.RemoveKey("NO_INPUT_DATA") ;
  93. }
  94.  
  95.  
  96.  
  97. BEGIN_MESSAGE_MAP(CCustom1Dlg, CAppWizStepDlg)
  98.     //{{AFX_MSG_MAP(CCustom1Dlg)
  99.     ON_BN_CLICKED(IDC_NODATA, OnNodata)
  100.     ON_BN_CLICKED(IDC_EDITDATA, OnEditdata)
  101.     ON_BN_CLICKED(IDC_READFILE, OnReadfile)
  102.     ON_BN_CLICKED(IDC_TEXTVIEW, OnTextView)
  103.     ON_BN_CLICKED(IDC_NOTEXTVIEW, OnNoTextView)
  104.     ON_WM_PAINT()
  105.     ON_WM_CTLCOLOR()
  106.     ON_WM_CREATE()
  107.     //}}AFX_MSG_MAP
  108. END_MESSAGE_MAP()
  109.  
  110.  
  111. /////////////////////////////////////////////////////////////////////////////
  112. // CCustom1Dlg message handlers
  113.  
  114.  
  115. BOOL CCustom1Dlg::OnInitDialog()
  116. {
  117.     CAppWizStepDlg::OnInitDialog();
  118.  
  119.     //Set default options.
  120.     return TRUE;  // return TRUE unless you set the focus to a control
  121.                   // EXCEPTION: OCX Property Pages should return FALSE
  122. }
  123.  
  124. void CCustom1Dlg::OnNodata()
  125. {
  126.     pSampletxtBMap = &bNoSampletxt ;
  127.     SetNumberOfSteps(NO_DATA_STEPS);
  128.     DrawBitmaps() ;
  129.  
  130. }
  131.  
  132. void CCustom1Dlg::OnEditdata()
  133. {
  134.     pSampletxtBMap = &bfromKb ;
  135.     SetNumberOfSteps(ENTER_DATA_STEPS);
  136.     DrawBitmaps() ;
  137. }
  138.  
  139. void CCustom1Dlg::OnReadfile()
  140. {
  141.     pSampletxtBMap = &bfromFile ;
  142.     SetNumberOfSteps(READ_FILE_STEPS);
  143.     DrawBitmaps() ;
  144. }
  145.  
  146. void CCustom1Dlg::OnTextView()
  147. {
  148.         pViewsBMap = &bTVandTxtVw ;
  149.         DrawBitmaps() ;
  150. }
  151.  
  152. void CCustom1Dlg::OnNoTextView()
  153. {
  154.     pViewsBMap = &bTVOnly ;
  155.     DrawBitmaps() ;
  156. }
  157.  
  158. void CCustom1Dlg::DrawBitmaps()
  159. {
  160.     CDC cpDcVw, cpDcTxt, *cdc  ;
  161.     RECT rec ;
  162.     m_PicFrame.GetWindowRect(&rec) ;
  163.     cdc = m_PicFrame.GetDC() ;
  164.     cpDcVw.CreateCompatibleDC(cdc);
  165.     // Draw the text view bitmap
  166.     cpDcVw.SelectObject(pViewsBMap) ;
  167.     cdc->BitBlt(0,0,rec.right - rec.left, rec.bottom-rec.top,&cpDcVw,0,0,SRCCOPY) ;
  168.  
  169.     // Draw the sample data source bitmaps.
  170.     cpDcTxt.CreateCompatibleDC(cdc);
  171.     cpDcTxt.SelectObject(pSampletxtBMap) ;
  172.     cdc->BitBlt(0,165,rec.right - rec.left, rec.bottom-rec.top,&cpDcTxt,0,0,SRCCOPY) ;
  173. }
  174.  
  175. void CCustom1Dlg::OnPaint()
  176. {
  177.     CPaintDC dc(this); // device context for painting
  178.     DrawBitmaps() ;
  179.  
  180. }
  181.  
  182. HBRUSH CCustom1Dlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
  183. {
  184.     if(pWnd == GetDlgItem(IDC_PICTURE))
  185.         DrawBitmaps() ;
  186.  
  187.     return CAppWizStepDlg::OnCtlColor(pDC, pWnd, nCtlColor);
  188. }
  189.  
  190. int CCustom1Dlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
  191. {
  192.     if (CAppWizStepDlg::OnCreate(lpCreateStruct) == -1)
  193.         return -1;
  194.  
  195.     bTVOnly.LoadBitmap(IDB_TVONLY) ;
  196.     bTVandTxtVw.LoadBitmap(IDB_TVANDTXTVW) ;
  197.     bNoSampletxt.LoadBitmap(IDB_NOSAMPLETXT) ;
  198.     bfromFile.LoadBitmap(IDB_TXTFROMFILE) ;
  199.     bfromKb.LoadBitmap(IDB_TXTFROMKB) ;
  200.  
  201.     pViewsBMap = &bTVandTxtVw ;
  202.     pSampletxtBMap = &bfromFile ;
  203.  
  204.     return 0;
  205. }
  206.