home *** CD-ROM | disk | FTP | other *** search
/ Master Visual C++ 1.5 / MASTERVC15.ISO / vcprog / original / ch27 / ball / ballview.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1994-02-12  |  4.3 KB  |  217 lines

  1. // ballview.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "ball.h"
  6. #include "ballview.h"
  7.  
  8. #ifdef _DEBUG
  9. #undef THIS_FILE
  10. static char BASED_CODE THIS_FILE[] = __FILE__;
  11. #endif
  12.  
  13. /////////////////////////////////////////////////////////////////////////////
  14. // CBallView
  15.  
  16. IMPLEMENT_DYNCREATE(CBallView, CFormView)
  17.  
  18. CBallView::CBallView()
  19.     : CFormView(CBallView::IDD)
  20. {
  21.     //{{AFX_DATA_INIT(CBallView)
  22.     m_AutoRepeat = FALSE;
  23.     //}}AFX_DATA_INIT
  24. }
  25.  
  26. CBallView::~CBallView()
  27. {
  28.  
  29.   ///////////////////////
  30.   // MY CODE STARTS HERE
  31.   //////////////////////
  32.  
  33.   // Delete the 11 bitmaps.
  34.   for (int i=0; i<11; i++)
  35.       delete m_pB[i];
  36.  
  37.   ////////////////////
  38.   // MY CODE ENDS HERE
  39.   ////////////////////
  40.  
  41. }
  42.  
  43. void CBallView::DoDataExchange(CDataExchange* pDX)
  44. {
  45.     CFormView::DoDataExchange(pDX);
  46.     //{{AFX_DATA_MAP(CBallView)
  47.     DDX_Check(pDX, IDC_AUTO_REPEAT, m_AutoRepeat);
  48.     //}}AFX_DATA_MAP
  49. }
  50.  
  51.  
  52. BEGIN_MESSAGE_MAP(CBallView, CFormView)
  53.     //{{AFX_MSG_MAP(CBallView)
  54.     ON_BN_CLICKED(IDC_START_BUTTON, OnStartButton)
  55.     ON_WM_TIMER()
  56.     //}}AFX_MSG_MAP
  57. END_MESSAGE_MAP()
  58.  
  59.  
  60. /////////////////////////////////////////////////////////////////////////////
  61. // CBallView message handlers
  62.  
  63. //////////////////////
  64. // MY CODE STARTS HERE
  65. //////////////////////
  66.  
  67. void CBallView::OnInitialUpdate()
  68. {
  69.  
  70.    // Load IDB_BITMAP1
  71.    m_pB[0] = new CBitmap;
  72.    m_pB[0]->LoadBitmap(IDB_BITMAP1);
  73.  
  74.    // Load IDB_BITMAP2
  75.    m_pB[1] = new CBitmap;
  76.    m_pB[1]->LoadBitmap(IDB_BITMAP2);
  77.  
  78.    // Load IDB_BITMAP3
  79.    m_pB[2] = new CBitmap;
  80.    m_pB[2]->LoadBitmap(IDB_BITMAP3);
  81.  
  82.    // Load IDB_BITMAP4
  83.    m_pB[3] = new CBitmap;
  84.    m_pB[3]->LoadBitmap(IDB_BITMAP4);
  85.  
  86.    // Load IDB_BITMAP5
  87.    m_pB[4] = new CBitmap;
  88.    m_pB[4]->LoadBitmap(IDB_BITMAP5);
  89.  
  90.    // Load IDB_BITMAP6
  91.    m_pB[5] = new CBitmap;
  92.    m_pB[5]->LoadBitmap(IDB_BITMAP6);
  93.  
  94.    // Load IDB_BITMAP7
  95.    m_pB[6] = new CBitmap;
  96.    m_pB[6]->LoadBitmap(IDB_BITMAP7);
  97.  
  98.    // Load IDB_BITMAP8
  99.    m_pB[7] = new CBitmap;
  100.    m_pB[7]->LoadBitmap(IDB_BITMAP8);
  101.  
  102.    // Load IDB_BITMAP9
  103.    m_pB[8] = new CBitmap;
  104.    m_pB[8]->LoadBitmap(IDB_BITMAP9);
  105.  
  106.    // Load IDB_BITMAP10
  107.    m_pB[9] = new CBitmap;
  108.    m_pB[9]->LoadBitmap(IDB_BITMAP10);
  109.  
  110.    // Load IDB_BITMAP11
  111.    m_pB[10] = new CBitmap;
  112.    m_pB[10]->LoadBitmap(IDB_BITMAP11);
  113.  
  114. }
  115.  
  116. ////////////////////
  117. // MY CODE ENDS HERE
  118. ////////////////////
  119.  
  120. ///////////////////////
  121. // MY CODE STARTS HERE
  122. ///////////////////////
  123.  
  124. void CBallView::OnDraw(CDC* pDC)
  125. {
  126.  
  127.  // Create a memory DC.
  128.  CDC* pMemDC = new CDC;
  129.  pMemDC->CreateCompatibleDC(pDC);
  130.  
  131.  // Select the bitmap into the memory DC.
  132.  pMemDC->SelectObject( m_pB[0] );
  133.  
  134.  // Copy the bitmap from the memory DC into the screen DC.
  135.  pDC->BitBlt(10,10,500,500,pMemDC,0,0,SRCCOPY);
  136.  
  137.  // Delete the memory DC.
  138.  delete pMemDC;
  139.  
  140. }
  141.  
  142. ////////////////////
  143. // MY CODE ENDS HERE
  144. ////////////////////
  145.  
  146. void CBallView::OnStartButton()
  147. {
  148.     // TODO: Add your control notification handler code here
  149.  
  150.  
  151.  //////////////////////
  152.  // MY CODE STARTS HERE
  153.  //////////////////////
  154.  
  155.  // Initialize the current frame number to 0.
  156.  m_CurrentFrame = 0;
  157.  
  158.  // Install a system timer.
  159.  if ( SetTimer (1, 200, NULL) == 0 )
  160.     MessageBox ("Cannot install timer!!!");
  161.  
  162.  ////////////////////
  163.  // MY CODE ENDS HERE
  164.  ////////////////////
  165.  
  166.     
  167. }
  168.  
  169. void CBallView::OnTimer(UINT nIDEvent)
  170. {
  171.     // TODO: Add your message handler code here and/or call default
  172.  
  173.  //////////////////////
  174.  // MY CODE STARTS HERE
  175.  //////////////////////
  176.  
  177.  // Increment the current frame number.
  178.  m_CurrentFrame++;
  179.  
  180.  // Is it the end of the show?
  181.  if (m_CurrentFrame==11)
  182.     {
  183.  
  184.     // Reset the frame number.
  185.     m_CurrentFrame=0;
  186.  
  187.     // If Auto Repeat not requested, kill the timer.
  188.     UpdateData(TRUE);
  189.     if (m_AutoRepeat == FALSE)
  190.        KillTimer(1);
  191.  
  192.     }
  193.  
  194.  // Get a dc for the screen.
  195.  CClientDC dc(this);
  196.  
  197.  // Create a memory DC.
  198.  CDC* pMemDC = new CDC;
  199.  pMemDC->CreateCompatibleDC(&dc);
  200.  
  201.  // Select the bitmap into the memory DC.
  202.  pMemDC->SelectObject( m_pB[m_CurrentFrame] );
  203.  
  204.  // Copy the bitmap from the memory DC into the screen DC.
  205.  dc.BitBlt(10,10,550,500,pMemDC,0,0,SRCCOPY);
  206.  
  207.  // Delete the memory DC.
  208.  delete pMemDC;
  209.  
  210.  ////////////////////
  211.  // MY CODE ENDS HERE
  212.  ////////////////////
  213.  
  214.     
  215.     CFormView::OnTimer(nIDEvent);
  216. }
  217.